Web应用程序1.4——创建用户账户
一.应用程序users
我们首先使用命令startapp来创建一个名为users的应用程序。
1.将应用程序users添加到settings.py中
--snip--
INSTALLED_APPS = [
#我的应用程序
'learning_logs',
'users',
]
--snip--
2.包含应用程序users的URL
urls.py
from django.conf.urls import include,url
from django.contrib import admin
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')),]
我们添加一行代码,这行代码与任何单词users打头的URL(如http://localhost:8000/users/login/)都匹配。
二、登录网页
在目录learning_log/users中创建一个名为urls.py的文件并添加如下代码:
urls.py
"""为应用程序users定义URL模式"""
from django.conf.urls import url
from django.contrib.auth.views import login
from . import views
urlpatterns=[
#登录页面
url(r'^login/$',login,{'template_name':'users/login.html'},
name='login'),]
我们首先导入默认视图login,登陆页面的URL模式与URL http://localhost:8000/users/login/匹配,在URL中单词users让Django在users/urls.py中查找,而单词login让它请求发送给Django默认视图login。我们传递一个字典,告诉Django去哪里查找我们将编写的模板。
1.模板login.html
login.html
{% extends "learning_logs/base.html" %}
{% block content %}
{% if form.errors %}
<p>Your username and password didn't match.Please try again.</p>
{% endif %}
<form method="post" action="{% url 'users:login' %}">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">log in</button>
<input type="hidden" name="next" value="{% url 'learning_logs:index' %}" />
</form>
{% endblock content %}
2.链接到登录页面
base.html
<p>
<a herf="{% url 'learning_logs:index'%}">Learning Log</a> -
<a herf="{% url 'learning_logs:topics'%}">Topics</a> -
{% if user.is_authenticated %}
Hello,{{ user.username }}.
{% else %}
<a href="{% url 'users:login' %}">log in</a>
{% endif %}
</p>
{% block content %}{% endblock content %}
在Django身份验证系统中,每个模板都可使用users变量,这个变量有一个属性is_authenticated:如果用户已登录,概述行为True,否则为False。
3.使用登录页面
访问http:///localhost:8000/admin/,如果你任然是以管理员身份登陆的,在页眉找到注销连接并单击,注销后访问 http://localhost:8000/users/login/,会看到类似下面的图:
三、注销
1.注销URL
urls.py
urlpatterns=[
--snip--
#注销
url(r'^logout/$',views.logout_view,name='logout'),]
2.视图函数logout_view()
views.py
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth import logout
def logout_view(request):
"""注销用户"""
logout(request)
return HttpResponseRedirect(reverse('learning_logs:index'))
3.链接到注销视图
base.html
--snip--
{% if user.is_authenticated %}
Hello,{{ user.username }}.
<a href="{% url 'users:logout' %}">log out</a>
{% else %}
<a href="{% url 'users:login' %}">log in</a>
{% endif %}
</p>
{% block content %}{% endblock content %}
包含个性化问候语和注销链接的主页:
四、注册页面
1.注册页面的URL模式
urls.py
urlpatterns=[
--snip--
#注册页面
url(r'^register/$',views.register,name='register'),]
这个模式与URL http://localhost:8000/users/register/匹配。
2.视图函数register()
views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth import logout,login,authenticate
from django.contrib.auth.forms import UserCreationForm
--snip--
def register(request):
"""注册新用户"""
if request.method!='POST':
#显示空的注册表单
form=UserCreationForm()
else:
#处理填写好的表单
form=UserCreationForm(data=request.POST)
if form.is_valid():
new_user=form.save()
#让用户自动登录,在重定向到主页
authenticated_user=authenticate(username=new_user.username,
password=request.POST['password1'])
login(request,authenticated_user)
return HttpResponseRedirect(reverse('learning_logs:index'))
context={'form':form}
return render(request,'users/register.html',context)
3.注册模板
register.html
{% extends "learning_logs/base.html" %}
{% block content %}
<form method="post" action="{% url 'users:register' %}">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">register</button>
<input type="hidden" name="next" value="{% url 'learning_logs:index' %}" />
</form>
{% endblock content %}
4.链接到注册页面
base.html
--snip--
{% if user.is_authenticated %}
Hello,{{ user.username }}.
<a href="{% url 'users:logout' %}">log out</a>
{% else %}
<a href="{% url 'users:register' %}">register</a> -
<a href="{% url 'users:login' %}">log in</a>
{% endif %}
</p>
{% block content %}{% endblock content %}
上一篇: OC基础第一天
下一篇: 全志F1C100S声卡驱动探究
推荐阅读
-
使用Spring Boot创建Web应用程序的示例代码
-
html5指南-6.如何创建离线web应用程序实现离线访问
-
SharePoint 2007图文开发教程(1) 简介,安装,配置及创建Web应用程序
-
html5指南-6.如何创建离线web应用程序实现离线访问
-
SharePoint 2007图文开发教程(1) 简介,安装,配置及创建Web应用程序
-
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
-
vs.Net2003无法打开或创建Web应用程序若干解决办法.
-
VisualNEO Web如何激活 应用程序创建发布工具VisualNEO Web安装及激活教程
-
跟进家庭版,Win11专业版将强制用户创建微软账户来进行系统初始化设置
-
【Web API系列教材】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)