首页
学习
活动
专区
圈层
工具
发布

Django实战篇-论坛模板引擎

① 视图、模板和静态文件 —— 模板引擎设置

  • HTML 特殊标签

Django基础篇-模板标签

代码语言:javascript
代码运行次数:0
复制
{% for ... in ... %} {% endfor %}

{% if ... %} {% else %} {% endif %}

{{ variable }}
  • settings.py 文件,TEMPLATE
代码语言:javascript
代码运行次数:0
复制
'DIRS': [os.path.join(BASE_DIR, 'templates')]
  • 静态文件设置 settings.py
代码语言:javascript
代码运行次数:0
复制
STATIC_URL = '/static/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
  • 在模板的开头使用了 Static Files App 模板标签
代码语言:javascript
代码运行次数:0
复制
{% load static %}

# 用于构成资源文件完整 URL
{% static %} 

② Django 需要一个 url.py 作为入口,根路由配置

  • 在 settings.py 文件
  • 使用 URLs API,urls.py
代码语言:javascript
代码运行次数:0
复制
from django.conf.urls import url
from django.urls import path

urlpatterns = []

在之前完成的论坛主页、话题和回帖的视图,可以将每个配置在路由中。

代码语言:javascript
代码运行次数:0
复制
urlpatterns = [
    path("home/", views.BoardListView.as_view(), name="home"),
    path("topic/<pk>/", views.TopicListView.as_view(), name="topics"),
    path("topic/<pk>/new/", views.new_topic, name="new_topic"),
    path("posts/<pk>/new/<topic_pk>/", views.PostListView.as_view(), name="new_posts"),
    path("posts/<pk>/topic/<topic_pk>/reply/", views.reply_topic, name="reply_topic"),
    path("posts/<pk>/topic/<topic_pk>/new/<post_pk>/edit/", views.PostUpdateView.as_view(), name="edit_post"),
]

③ 前端 form 表单,创建话题、回复帖子和修改帖子的复用模板

代码语言:javascript
代码运行次数:0
复制
# 模板过滤器
{% load form_tags widget_tweaks %}
{% if form.non_field_errors %}
    <div class="alert alert-danger" role="alert">
        {% for error in form.non_field_errors %}
            <p{% if forloop.last %} class="mb-0"{% endif %}>{{ error }}</p>
        {% endfor %}
    </div>
{% endif %}
{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }}
        {% render_field field class=field|input_class %}
        {% for error in field.errors %}
            <div class="invalid-feedback">
                {{ error }}
            </div>
        {% endfor %}
        {% if field.help_text %}
            <small class="form-text text-muted">
                {{ field.help_text|safe }}
            </small>
        {% endif %}
    </div>
{% endfor %}
下一篇
举报
领券