纯手撸 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'
]