Django实现注册
创建项目与应用
django-admin.py startproject mysite3
python manage.py startapp account
打开mysite3/mysite3/settings.py文件,将应用添加进去:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'account',
]
设计Model(数据库)
打开打开mysite3/account/models.py文件,添加如下内容:
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField()
生成数据库表
python manage.py makemigrations
python manage.py migrate
创建视图(逻辑层)
打开mysite3/account/views.py 文件:
from django.shortcuts import render,HttpResponse
from account.models import User
from django import forms
#定义表单模型
class UserForm(forms.Form):
username = forms.CharField(label='用户名:',max_length=100)
password = forms.CharField(label='密码:',widget=forms.PasswordInput())
email = forms.EmailField(label='电子邮件:')
def register(request):
if request.method == 'POST':
uf = UserForm(request.POST)
if uf.is_valid():
#获取表单信息
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
email = uf.cleaned_data['email']
#将表单写入数据库
user = User()
user.username = username
user.password = password
user.email = email
user.save()
#返回注册成功页
return render(request,'success.html',{'uf':uf})
else:
uf = UserForm()
return render(request,'register.html',{'uf':uf})
在这个逻辑中主要做了几件事,首先提供给用户一个注册页面(register.html),UserForm类定义了表单在注册页面上的显示。接受用户填写的表单信息,然后将表单写入到数据库,最后返回给用户一个注册成功的页面(success.html).
创建模板文件(前端页面)
在逻辑层提到了两个页面,一个注册页,一个注册成功页面。先在mysite3/account/ 目录下创建telmplates目录,接着在 mysite3/account/templates目录下创建 register.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户注册</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<style type="text/css">
body{color:#efd;background:#453;padding:0 5em;margin:0}
h1{padding:2em 1em;background:#675}
h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
p{margin:1em 0}
</style>
<body>
<h1>注册页面:</h1>
<form method = 'post' enctype="multipart/form-data">
{{uf.as_p}}
<input type="submit" value = "ok" />
</form>
</body>
</html>
mysite3/account/templates 目录下创建success.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册成功</title>
</head>
<body>
<h1>恭喜 {{ username }},注册成功!</h1>
</body>
</html>
设置URL
打开mysite3/mysite3/urls.py:
from django.conf.urls import url,include
from django.contrib import admin
from account import urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^account/',include('account.urls')),
]
在mysite3/account/目录下创建urls.py文件:
from django.conf.urls import url,include
from . import views
urlpatterns = [
url(r'^$',views.register,name='register'),
url(r'^register/$',views.register,name='register'),
]
这里表示访问: http://127.0.0.1:8000/account和http://127.0.0.1:8000/account/register/都会指向同一个页面。
体验注册
现在我们一体验一下注册:
打开打开mysite3/mysite3/settings.py文件,将下面一行代码注释:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
现在可以作为一个用户去填写表单了:
查看登录的用户
你可以直接查询数据库表,也可以使用admin管理
打开mysite3/account/models.py文件:
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField()
from django.contrib import admin
class UserAdmin(admin.ModelAdmin):
list_display = ('username','password','email')
admin.site.register(User,UserAdmin)
重新初始化数据库后,登录admin后台: