Django项目——应用程序users和登录

一 将应用程序users添加到settings.py中

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # 我的应用程序
    'learning_logs',
    'users',
)

二 包含应用程序users的URL

# -*- coding: utf-8 -*-

from django.conf.urls import include, url
from django.contrib import admin
'''
这行代码与任何以单词 users 打头的 URL (如 http://localhost:8000/users/login/ )都匹配。
我们还创建了命名空间 'users' ,以便将应用程序 learning_logs 的 URL 同应用程序 users 的 URL 区分开来。
'''
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^users/', include('users.urls', namespace='users')),
    url(r'', include('learning_logs.urls', namespace='learning_logs')),
]

三 登录页面

1 用户应用的url

# -*- coding: utf-8 -*-

from django.conf.urls import url
# 导入views中login
from django.contrib.auth.views import login

from . import views

'''
1 第一个url解析
登录页面的 URL 模式与 URL http://localhost:8000/users/login/ 匹配。
这个 URL 中的单词 users 让 Django 在 users/urls.py 中查找,而单词login 让它将请求发送给 Django 默认视图 login
(注意,视图实参为 login ,而不是 views.login )。
鉴于我们没有编写自己的视图函数,我们传递了一个字典,告诉 Django去哪里查找我们将编写的模板。
这个模板包含在应用程序 users 而不是 learning_logs 中。
'''
urlpatterns = [
    # 登录页面.
    url(r'^login/$', login, {'template_name': 'users/login.html'},
        name='login'),
        
]

2 登录模板

<!--一个应用程序中的模板可继承另一个应用程序中的模板。-->
{% extends "learning_logs/base.html" %}

{% block content %}
  <!--如果表单的 errors 属性被设置,我们就显示一条错误消息,
    指出输入的用户名 — 密码对与数据库中存储的任何用户名 — 密码对都不匹配。-->
  {% if form.errors %}
  <p>用户名和密码不匹配,请重试!</p>
  {% endif %}
  <!--让登录视图处理表单,因此将实参 action 设置为登录页面的 URL -->
  <form method="post" action="{% url 'users:login' %}">
  {% csrf_token %}
    <!--登录视图将一个表单发送给模板,在模板中,我们显示这个表单-->
  {{ form.as_p }}
    
  <button name="submit">log in</button>
  <!--我们包含了一个隐藏的表单元素 —— 'next' ,其中的实参 value 告诉 Django 在用户成功登录后将其重定向到什么地方
     —— 在这里是主页-->
  <input type="hidden" name="next" value="{% url 'learning_logs:index' %}" />
  </form>
    
{% endblock content %}

3 链接到登录页面

<p>
  <a href="{% url 'learning_logs:index' %}">学习笔记</a> -
  <a href="{% url 'learning_logs:topics' %}">主题</a> -
  <!--在 Django 身份验证系统中,每个模板都可使用变量 user ,
  这个变量有一个 is_authenticated 属性:如果用户已登录,
  该属性将为 True ,否则为 False 。-->
  {% if user.is_authenticated %}
  <!--对于已通过身份验证的用户,还设置了属性 username ,
  我们使用这个属性来个性化问候语,让用户知道他已登录-->
    你好, {{ user.username }}.
    <a href="{% url 'users:logout' %}">退出</a>
  {% else %}
  <!--对于还未通过身份验证的用户,我们再显示一个到登录页面的链接-->
    <a href="{% url 'users:register' %}">注册</a> -
    <a href="{% url 'users:login' %}">登录</a>
  {% endif %}
</p>

{% block content %}{% endblock %}

四 登录测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值