1、forms模块
将Models和Forms结合到一起使用,将Forms中的类和Models中的类关联到一起,实现属性的共享
1、在forms.py中创建class,继承自forms.ModelForm
2、创建内部类:Meta,关联Form和Model

属性:
1、model:指定要关联的Model类
2、fields:指定从Model中取哪些字段生成控件
1、取值 "__all__",全部的属性都要生成控件
2、取值 列表或元组,声明允许生成控件的属性名称
3、labels:每个属性所关联的label,取值为字典
labels = {
"属性名1","文本1",
"属性名2","文本2"
}

url:

 urlpatterns = [
url(r'^01_request/$',request_views),
url(r'^02_meta/$',meta_views),
url(r'^03_form/$',form_views),
url(r'^04_get_post/$',get_post_views),
url(r'^05_remark/$',remark_views), url(r'^register/$',register_views),
url(r'^login/$',login_views),
url(r'^login_auto/$',login_auto_views), url(r'01_login',login_form_views),
url(r'01_regiter',regiter_form_views),
]

models.py

 from django.db import models

 class Users(models.Model):
uname = models.CharField(max_length=30)
upwd = models.CharField(max_length=30)
uage = models.IntegerField()
uemail = models.EmailField() def __str__(self):
return self.uname

views.py:

 from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_protect def request_views(request):
# request,类型就是HttpRequest
# request 封装的是与所有请求相关的内容
# print(dir(request)) scheme = request.scheme #请求方案(协议)
body = request.body #请求主体
path = request.path #请求路径
host = request.get_host() #请求主机地址 / 域名
method = request.method #请求方法
get = request.GET #get的请求数据
post = request.POST #get的请求数据
cookies = request.COOKIES #cookie中的数据
meta = request.META #请求中的元数据
return render(request,"01_request.html",locals()) def meta_views(request):
print(request.META["HTTP_REFERER"])
return HttpResponse("request ok") def form_views(request):
return render(request,"03_form.html") @csrf_protect
def get_post_views(request):
if request.method == "GET":
name = request.GET.get("uname")
pwd = request.GET.get("upwd")
return HttpResponse("用户名:"+name+",用户密码:"+pwd)
else:
name = request.POST["uname"]
pwd = request.POST["upwd"]
return HttpResponse ("用户名:" + name + ",用户密码:" + pwd) from .forms import *
def remark_views(request):
if request.method == "POST":
subject = request.POST["subject"]
return HttpResponse(subject)
form = RemarkForm()
return render(request,"05_remark.html",locals()) from .form import *
def login_views(request):
if request.method == "GET":
forms = LoginForm()
return render(request,"login.html",locals())
else:
uname = request.POST["uname"]
upwd = request.POST["upwd"]
user = Users.objects.get(uname=uname)
if user:
if user.upwd == upwd:
return HttpResponse("验证通过")
else:
errmsg = "密码"
return render (request, "login.html", locals ())
else:
errmsg = "用户名错误"
return render(request,"login.html",locals()) def login_auto_views(request):
if request.method == "GET":
form = LoginForm()
return render(request,"login.html",locals())
else:
form = LoginForm(request.POST)
if form.is_valid():
data = form.cleaned_data
print(data)
uname = data["uname"]
print(uname)
upwd = data["upwd"]
user = Users.objects.filter(uname=uname).first()
if user:
if user.upwd == upwd:
return HttpResponse("验证通过")
else:
errmsg = "密码错误"
return render (request,"login.html",locals())
else:
errmsg = "用户名错误"
return render(request,"login.html",locals())
return HttpResponse("信息错误") def register_views(request):
if request.method == "GET":
forms = RegisterForm()
return render(request,"register.html",locals())
else:
form = RegisterForm(request.POST)
if form.is_valid():
data = form.cleaned_data
uname = data["uname"]
upwd = data["upwd"]
uage = data["uage"]
uemail = data["uemail"]
user = Users.objects.filter(uname=uname).first()
if user:
errmsg = "用户名已存在"
return render(request, "register.html", locals())
else:
user = Users (uname=uname, upwd=upwd, uage=uage, uemail=uemail)
user.save () Users(**data).save()
return HttpResponse("注册成功") def login_form_views(request):
if request.method == "GET":
form = UserLoginForm()
return render(request,"login_form.html",locals())
else:
uname = request.POST["uname"]
upwd = request.POST["upwd"]
user = Users.objects.get(uname=uname)
if user:
if user.upwd == upwd:
return HttpResponse("验证通过")
else:
errmsg = "密码"
return render (request, "login.html", locals ())
else:
errmsg = "用户名错误"
return render(request,"login.html",locals()) def regiter_form_views(request):
if request.method == "GET":
form = UserRegisterForm()
return render(request,"register_form.html",locals())
else:
form = RegisterForm(request.POST)
if form.is_valid():
data = form.cleaned_data
uname = data["uname"]
upwd = data["upwd"]
uage = data["uage"]
uemail = data["uemail"]
user = Users.objects.filter(uname=uname).first()
if user:
errmsg = "用户名已存在"
return render(request, "register.html", locals())
else:
user = Users (uname=uname, upwd=upwd, uage=uage, uemail=uemail)
user.save () Users(**data).save()
return HttpResponse("注册成功")

forms.py

 from django import forms

 # 表示评论内容表单控件
# 评论标题 文本框
# 评论人邮件 type='Email'
# 题目 Select
# isSave type="checkbox"
class RemarkForm(forms.Form):
subject = forms.CharField(label="标题")
email = forms.EmailField(label="邮箱")
message = forms.CharField(label="内容",widget=forms.Textarea)
topic_choice = (
("","好评"),
("","中评"),
("","差评")
)
topic = forms.ChoiceField(label="评价",choices=topic_choice)
issave = forms.BooleanField(label="是否保存")

form.py

 from django import forms

 class LoginForm(forms.Form):
uname = forms.CharField(label="用户名:")
upwd = forms.CharField(label="用户密码:",widget=forms.PasswordInput) class RegisterForm(forms.Form):
uname = forms.CharField(label="用户名称:",max_length=18)
upwd = forms.CharField(label="用户密码:",widget=forms.PasswordInput)
uage = forms.IntegerField(label="用户年龄:")
uemail = forms.EmailField(label="用户邮件:") from .models import *
# 创建class表示登录的表单,要关联Users实体类
class UserLoginForm(forms.ModelForm):
# 创建内部类Meta,关联Model
class Meta:
# 1、指定关联的Model
model = Users
# 2、指定要生成的控件
fields = ["uname","upwd"]
# 3、指定每个控件对应的label
labels = {
"uname":"用户名称",
"upwd":"用户密码"
}
class UserRegisterForm(forms.ModelForm):
# 创建内部类Meta,关联Model
class Meta:
# 1、指定关联的Model
model = Users
# 2、指定要生成的控件
fields = "__all__"
# 3、指定每个控件对应的label
labels = {
"uname":"用户名称",
"upwd":"用户密码",
"uage":"用户年龄",
"uemail":"用户邮箱"
}

login.html:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<p>{{ errmsg }}</p>
<form action="/login/" method="post">
{% csrf_token %}
{% for form in forms %}
<p>{{ form.label }}{{ form }}</p>
{% endfor %}
<p><input type="submit" value="登录"></p>
</form> ==========================================================
<p>{{ errmsg }}</p>
<form action="/login_auto/" method="post">
{% csrf_token %}
{% for form in forms %}
<p>{{ form.label }}{{ form }}</p>
{% endfor %}
<p><input type="submit" value="登录"></p>
</form>
</body>
</html>

register.html

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<p>{{ errmsg }}</p>
<form action="/register/" method="post">
{% csrf_token %}
{% for form in forms %}
<p>{{ form.label }}{{ form }}</p>
{% endfor %}
<p><input type="submit" value="注册"></p>
</form>
</body>
</html>

login_form.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>{{ errmsg }}</p>
<form action="/01_login/" method="post">
{% csrf_token %}
{{ form.as_p }}
<p><input type="submit" value="登录"></p>
</form> </body>
</html>

register_form.html:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>{{ errmsg }}</p>
<form action="/01_regiter/" method="post">
{% csrf_token %}
{{ form.as_p }}
<p><input type="submit" value="登录"></p>
</form> </body>
</html>

Django中用 form 实现登录注册的更多相关文章

  1. Django基于Form之登录和注册

    1.创建Forms文件,内容略多,大家将就着看,不懂请留言 #!/usr/bin/env python # -*- coding: utf8 -*- #__Author: "Skiler H ...

  2. Django基于form组件实现注册校验

    一 基本流程 1 创建form组件对应的类,比如LoginForm 2 前端的三种渲染方式: 渲染方式三种: 1 <form action="" novalidate met ...

  3. 搭建自己的博客(二十一):通过django表单实现登录注册

    1.变化的部分

  4. python利用django实现简单的登录和注册,并利用session实现了链接数据库

    利用session实现与数据库链接,登录模块(在views.py) def login(request): # return HttpResponseRedirect('/') # 判断是否post方 ...

  5. django项目一 登录注册

    STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] AUTH_USER_MODEL = 'cr ...

  6. django 登录注册注销

    一.设计数据模型 1.数据库模型设计 作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息.很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息: 用户名 密码 邮箱地址 性别 ...

  7. Django 11 form表单(状态保持session、form表单及注册实现)

    Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...

  8. Django+pycharm+mysql 实现用户登录/注册(Django五)

    首先是让Django项目与mysql数据库初步建立连接 具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的) 这里讲一下我在做这一步遇到的问题.一般Driver 那 ...

  9. Django实现用户登录注册

    本文将会介绍小白如何完成一个用户登录注册系统 新建一个Django项目,名字为login_register,并且使用命令manage.py startapp.User(名字自己随便起) 最终djang ...

随机推荐

  1. ng-template、ng-content、ng-container

    https://www.jianshu.com/p/0f5332f2bbf8 ng-template.ng-content.ng-container三者应该是自定义组件需要经常用到的指令.今天咱们就来 ...

  2. Comet OJ - Contest #4 D求和 思维题

    Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...

  3. [CF535D]Tavas and Malekas 题解

    题意简述 有一个空着的长度为\(n\)的字符串\(ans\),再给出一个长度为\(m\)的序列\(a\),现要在序列中每个元素\(a_i\)的位置开始都规定必须为一个给定的字符串\(s\).问字符串\ ...

  4. (26)Python获取某个文件存放的相对路径(更改任意目录下保持不变)

    import os import platform def getSeparator(): ''' 获取不同平台下的斜杠符号 :return: Created by Wu Yongcong 2017- ...

  5. java读取ldif文件并创建新的节点

    所需jar包ldap.jar. jldap-4.3-source.jar http://www.java2s.com/Code/Jar/l/Downloadldapjar.htm 浏览器输入http: ...

  6. Oracle update或alter表被锁住的问题

    \\ 查询被锁的对象.来源.sid和serial select object_name, machine, s.sid, s.serial# from v$locked_object l, dba_o ...

  7. K-th occurrence HDU - 6704 (后缀数组+二分线段树+主席树)

    大意: 给定串s, q个询问(l,r,k), 求子串s[l,r]的第kk次出现位置. 这是一篇很好的题解: https://blog.csdn.net/sdauguanweihong/article/ ...

  8. C# out 和 ref 区别

    C#里面的 out 和ref参数时常会用到 记录一下: public void Start() { //outSum没必要赋值,赋值了也完全没用. //如果AddByOut函数内部直接使用out对应的 ...

  9. Openstack_SQLAlchemy_一对多关系表的多表插入实现

    目录 目录 Openstack 与 SQLAlchemy 一个多表插入的 Demo 小结 Openstack 与 SQLAlchemy SQLAlchemy 是 Python 语言下的一款开源软件,它 ...

  10. malloc函数分配内存失败的常见原因

    malloc()函数分配内存失败的常见原因:  1. 内存不足.  2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏.下次再使用malloc()函数申请内存 ...