返回顶部

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

访问

http://localhost:8080/myweb/

 

 

 

posted @ 2023-07-23 00:11  九尾cat  阅读(61)  评论(0编辑  收藏  举报