纯手撸 Django web框架实现文章发布
纯手撸 Django web框架实现文章发布
在文章上传之后将上传文件进行发布展示功能
- 制作模板
- 模板通过templates文件夹里的HTML展示给用户
- 模板除内容外,还可以展示样式以及JS等前端脚本实现的逻辑
- 修改视图
- 根据上一讲创建的Blog模型,创建展示的视图
- 创建视图后,需要修改urls.py映射用户请求URL到指定视图
文章发布是将数据库中的指定字段通过模板展示给用户,视图需绑定URL,并由将Django重新加载后才能正常访问。
修改视图
### ### mysite/myweb/views.py from django.shortcuts import render # Create your views here. # from django.http import HttpResponse # # 接收用户的请求,采用标准的httpreponse返回数据 # def index(request): # # 处理模型,指定模板 # return HttpResponse('Hello Django') from .models import Article # 参考 https://docs.djangoproject.com/zh-hans/4.1/intro/tutorial03/#a-shortcut-render def index(request): blog_list = Article.objects.order_by('title') context = {'blog_list': blog_list} return render(request, 'web.html', context)
修改返回模版信息
### ### mysite/mysite/urls.py from django.contrib import admin from django.urls import path from django.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('myweb/', include('myweb.urls')), ] ### ### mysite/myweb/urls.py from django.urls import path from . import views app_name = 'myweb' urlpatterns = [ path('', views.index, name='index'), #'',在localhost:8080/myweb后面不在添加path,需要时可在添加等同于localhost:8080/myweb/xxx ] ### ### mysite/myweb/views.py from django.shortcuts import render # Create your views here. from django.http import HttpResponse # # 接收用户的请求,采用标准的httpreponse返回数据 # def index(request): # # 处理模型,指定模板 # return HttpResponse('Hello Django') # 参考 https://docs.djangoproject.com/zh-hans/4.1/intro/tutorial03/#a-shortcut-render def index(request): blog_list = Ariticle.objects.order_by('title') context = {'blog_list': blog_list} return render(request,'web.html',context)
配置模板
####### 先创建目录templates在创建web.html ### ### mysite/myweb/templates/web.html {% load bootstrap4 %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0""> <title>{{title}} </title> {% bootstrap_css %} {% bootstrap_javascript %} </head> <body> {% block content %} {% if blog_list %} {% for blog in blog_list %} <ul> <h2> {{blog.title}} </h2> <li> {{blog.pub_date}} </li> <h4> {{blog.data}} </h4> </ul> {% endfor %} {% else %} <p>暂无博客内容</p> {% endif %} {% endblock content %} </body> </html>
报错“'bootstrap4' is not a registered tag library”
报错信息: raise TemplateSyntaxError(
django.template.exceptions.TemplateSyntaxError: 'bootstrap4' is not a registered tag library. Mu
admin_list
admin_modify
admin_urls
cache
i18n
l10n
log
原因为缺少django-bootstrap4 库
#解决方法安装bootstrap4 库 pip install django-bootstrap4
#若是安装之后还有上述问题,则检查settings.py中配置在 Django 项目的 INSTALLED_APPS 设置中添加了 'bootstrap4'。如果仍然无法解决问题,请检查 Django 版本和 Bootstrap 4 版本是否兼容。
## mysite/mysite/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bootstrap4',
'myweb'
]
访问