我们Django后台已经搭建好了,但是前端页面还没创建好,所以今天要开始写前端了!
给大家推荐一个写前端的办法:在百度里面搜索bootstrap,点击bootstrap中文网,然后里面有一个组件,组件里面有很多功能,代码已经写好了
文章图片
文章图片
文章图片
直接复制就可以了。
在blog目录下新建一个专门用来写前端的目录叫templates(模板),再在里面新建一个目录blog,在blog里面新建一个HTML文件index,大多数首页都叫index
文章图片
此时改一下标题和内容如下:
文章图片
刷新一下页面,发现和前面相比没有任何区别
文章图片
这是为什么呢?
因为我们自己定义了一个templates模板文件,Django怎么知道模板templates文件在哪?
还需要在setting.py里面的TEMPLATES里加一步配置
文章图片
在DIPS里面加入如下
‘DIRS’: [os.path.join(BASE_DIR,‘templates’)],
os.path.join(BASE_DIR,‘templates’)
os.path.join这个方法是拼接路径的
BASE_DIR:这个是指项目的根目录
‘templates’:拼接templates
刷新看看
文章图片
还是没有显示我们的页面,为什么?
因为我们没有配置URL,没有URL,就不能访问URL,每个页面都有自己的URL
新建一个urls.py文件
文章图片
文章图片
但是我们项目里面有个URL,为什么我们还要新建?
因为那个是项目的跟目录,我们自己分应用的话都要在应用里面自己写一个URL
文章图片
怎么让Django识别我建的URL呢?
在原来的项目urls.py里面加入代码
在urlpatterns上方加入如下代码:
from django.conf.urls import url,include
在urlpatterns里面加入如下代码:
url(r’’,include(‘blog.urls’)),
自己新建的urls.py代码如下:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include
from.import views
urlpatterns = [
url(r'^$',views.index,name='index')
]
view.py代码如下:
from django.shortcuts import render# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("欢迎你来到我的博客!")
刷新页面
文章图片
写一下HTML页面,我去bootstrap导航条里面复制,然后引用了bootstrap的css和js,
一定要加上这几行代码:
{#引用bootstrap的css#}
{#引用bootstrap的js#}
{{title}} - 锐客网 {#变量的形式用花括号,,即将title变成变量传到后台views.py的request里面#}
代码如下:
#引用bootstrap博客 - 锐客网
{#以下为bootstrap的媒体对象代码#}
文章图片
Middle aligned media
...
刷新了,发现并没有我们想要的效果,难道是代码错了?我们发现是views.py里面的代码惹的祸,请求返回的还是那个
文章图片
那我们就用自带的render吧
修改代码如下:
文章图片
该index.html的代码:
将”博客”改为:{{title}}
文章图片
{{title}} #{{title}}变量的形式用花括号,,即将title变成变量传到后台views.py的request里面 刷新一下:
文章图片
文章图片
和bootstrap的样式一样,说明成功了
接下来要写真正的视图函数了,代码如下:
from django.shortcuts import render# Create your views here.
from django.http import HttpResponse
from .models import post
def index(request):
#return HttpResponse("欢迎你来到我的博客!")
#return render(request,'blog/index.html',context={'title':'博客'})#内容
post_list = post.objects.all()#数据库里面取数据
return render(request, 'blog/index.html', context={'title': '博客','post_list':'post_list'})# 渲染数据
【Django制作个人博客——前端页面】写好后,前端要写变量,要显示渲染的业务逻辑,代码如下:
{#引用bootstrap的css#}
{#引用bootstrap的js#}
{{title}} - 锐客网 {#变量的形式用花括号,,即将title变成变量传到后台views.py的request里面#}
{#以下为bootstrap的媒体对象代码#}
文章图片
{{ post_list }}
{% for item in post_list %}
{{ item.body }}
{% endfor %}
{% for item in post_list %}
{{ item.title }}
{% endfor %}
刷新页面:
文章图片
新建一个放图片的文件夹,新建一个目录static,在static中新建一个media,将图片放在media中
加入图片路径
文章图片
刷新发现错误,图片怎么没显示呢?
是因为还没配置URL,在setting.py里面加入如下代码:
STATIC_URL = ‘/static/’
STATICFILES_DIRS=[
os.path.join(BASE_DIR,‘static’)
]
MEDIA_ROOT=os.path.join(BASE_DIR,r’static\media’)
刷新即可:
文章图片
接下来是页面的美化,我后期会进行修改
推荐阅读
- 数组的排序算法
- 学习|Python学习心得,小白初学工具推荐
- jQuery---用jq实现控件的显示和隐藏
- 使一个布局中的所有事件失效
- 学习|python3打印菱形(测试过)
- 学习|自定义圆形progressbar(包含进度动画效果)
- Android|Android 实现 圆形进度对话框 和 水平进度对话框 —— ProgressDialog
- 多人合作项目使用Git进行代码控制
- 并发|11.防刷限流
- android|动态设置Progress值和颜色