二 Django入门( 六 )

{% endblock content %}
# vim learning_logs/templates/learning_logs/topic.html
{% extends 'learning_logs/base.html' %}{% block content %}Topic: {{ topic }}
Entries:
add new entry

    {% for entry in entries %}
  • {{ entry.date_added|date:'M d, Y H:i' }}
    {{ entry.text|linebreaks }}
    edit entry
  • {% empty %}
  • There are no entries for this topic yet.
  • {% endfor %}
{% endblock content %}
将编辑链接放在每个条目的日期和文本后面 。在循环中 , 使用模板标签{% url %}根据URL模式和当前条目的ID属性entry.id来确定URL 。链接文本为"edit entry" , 它出现在页面中每个条目的后面 。
创建用户账户
应用路径:users
接下来建立一个用户注册和身份验证系统 , 让用户能够注册账户 , 进而登录和注销 。
应用程序users
# python manage.pystartapp users# lsdb.sqlite3learning_loglearning_logsll_envmanage.pyusers# ls users/admin.pyapps.py__init__.pymigrationsmodels.pytests.pyviews.py
可以看到 ,  users目录的结构与应用程序相同 。
# vim learning_log/settings.pyINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 我的应用程序'learning_logs','users',#增加这行]
# vim learning_log/urls.py
from django.contrib import adminfrom django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('users/', include('users.urls', namespace='users')),#增加这行path('', include('learning_logs.urls', namespace='learning_logs')),]
同样的 , 这里保存完文件之后会报错: Nonamed 'users.urls' , 不用理会 , 继续往下做 。
登录页面
现在来实现登录页面的功能 , 可以使用提供的默认登录视图 。
# vim users/urls.py
"""定义users的URL模式"""from django.urls import path, re_pathfrom django.contrib.auth.views import LoginViewfrom . import viewsapp_name='users'urlpatterns = [# 登录主页re_path(r'^login/$', LoginView.as_view(template_name='users/login.html'), name='login'),]
# mkdir -p users/templates/users# vim users/templates/users/login.html
【二Django入门】{% extends "learning_logs/base.html" %}{% block content %}{% if form.errors %}Your username and password didn't match. Please try again.
{% endif %}
{% csrf_token %}{{ form.as_p }}
{% endblock content %}

先继承base.html , 请注意 , 一个应用程序中的模板可继承另一个应用程序中的模板 。