Django中forms的一些用法

一、原生的formIn your templates
 1                 <form action="" method="POST" class="" role="form">
 2                    <div class="input-group">
 3                         <span class="input-group-addon" ><img src="{% static ‘img/username2.png‘ %}" alt="" width=‘24px‘></span>
 4                         <input type="text" class="form-control" placeholder="username/email" autofocus="" required="" name=‘username‘>
 5                     </div>
 6                     <div class="input-group">
 7                         <span class="input-group-addon"><img src="{% static ‘img/password2.png‘ %}" alt=""></span>
 8                         <input type="password" class="form-control" placeholder="your password" required="" name=‘password‘>
 9                     </div>
10                     <input type="submit" name=‘login‘ value="Login" class="btn  btn-success btn-block">
11                     {% csrf_token %}
12                 </form>


In your views


 1 def login(request):
 2     context={}
 3     if request.method==‘GET‘:
 4         return render(request,‘login.html‘,context)
 5     else:
 6         //获取Login用户信息的2种方式
 7         username=request.POST[‘username‘]
 8         password=request.POST.get("password")
 9         //数据库中创建用户
10         User.objects.create(
11                     username=username,
12                     password=password,
13                 )
14          return HttpResponse("Success done")        

[需要额外添加验证步骤]

二、使用Django form

In your forms.py,

1 from django import forms
2
3 class Loginfm(forms.Form):
4     # UI显示名称
5     username=forms.CharField(label=‘用户‘)
6     password=forms.CharField(label=‘密码‘)

In your views.py

 1 from blogapp.forms import Loginfm
 2 def login(request):
 3     context={}
 4     if request.method==‘GET‘:
 5         loginfm=Loginfm()
 6         context["loginfm"]=loginfm
 7
 8     else:
 9         loginfm=Loginfm(request.POST)
10         if loginfm.is_valid():
11             username=loginfm.cleaned_data[‘username‘]
12             password=loginfm.cleaned_data[‘password‘]
13             User.objects.create(
14                 username=username,
15                 password=password,
16                 email=‘[email protected]‘,
17                 )
18             return HttpResponse("Form submit success")
19
20     return render(request,‘login.html‘,context)

In your templates,

1  <form action="" method="POST" class="" role="form">
2           {{ loginfm.as_p }}
3           {% csrf_token %}
4 </form>

[Django根据字段属性可以对字段合法性进行检查,比较适合大量的补充信息提交,可以省去很多验证环节]

--自带样式较为有限,当然你也可以额外补充样式--

三、ModelForm

In your forms.py

1 from blogapp.models import User
2 class Loginfm(forms.ModelForm):
3     # 绑定User类
4     class Meta():
5         model=User
6         # 除了‘ID‘外全部显示,include(‘ID‘)只包含‘ID‘,相反
7         exclude=("id",‘email‘)

In your views

 1 def login(request):
 2     context={}
 3     if request.method==‘GET‘:
 4         loginfm=Loginfm()
 5         context["loginfm"]=loginfm
 6     else:
 7         loginfm=Loginfm(request.POST)
 8         if loginfm.is_valid():
 9             loginfm.save()
10             return HttpResponse("Form submit success")
11     return render(request,‘login.html‘,context)

codes in your templates are the same as above(way2)

时间: 2024-11-06 18:41:11

Django中forms的一些用法的相关文章

Django中的信号及其用法

Django中提供了"信号调度",用于在框架执行操作时解耦. 一些动作发生的时候,系统会根据信号定义的函数执行相应的操作 Django中内置的signal Model_signals pre_init # Django中的model对象执行其构造方法前,自动触发 post_init # Django中的model对象执行其构造方法后,自动触发 pre_save # Django中的model对象保存前,自动触发 post_save # Django中的model对象保存后,自动触发 p

Django中ajax的基本用法

初识Ajax: ? Ajax并不是一门新的语言,它其实就是基于js写的一个功能模块而已 由于原生js书写ajax较为繁琐,django中我们一般直接使用jQuery封装好的ajax模块 案例: ? 页面上有是三个input框,一个按钮,用户在前两个框中输入数字,点击按钮保证页面不刷新的情况下将数据发到后端做计算,再将计算好的结果发送给前端展示到第三个input框中 ajax基本语法结构 $.ajax({ // 1. 到底朝哪个后端提交数据 url:'', // 控制数据的提交路径 (有三种方法,

[转]cookie和session在Django中的应用

阅读目录 1 会话跟踪技术 2 cookie介绍 Cookie版登录校验 会话Session 回到顶部 1 会话跟踪技术 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中. 在Web中,客户向某一服务器

django中tag的用法

新建一个tags.py from django import templateregister = template.Library() def short_msg(value): if len(value) > 50: return value[:50]+" ......" else: return value register.filter('short_msg', short_msg) 在html页面中 {% extends "base.html" %}

django中models和forms阅读笔记

一.使用数据库需要设置settings.py文件. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': '', # Or path to database file if using sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD

Django文件上传机制用法详解(转)

Django文件上传机制用法详解 http://www.jbxue.com/article/24283.html 分享下Django文件上传机制的用法,包括基本上传文件的原理,以及如何处理上传文件的方法,需要的朋友参考下. 当Django处理上传一个文件时,文件数据被放在request.FILES中. 这个文档解释文件怎么样被存储在磁盘上或者内存中,怎样定制默认的行为. 一,基本文件上传考虑一个包含FileField的简单的表单: 复制代码 代码示例: from  django  import 

Django中使用表单

使用表单 表单用 user 提交数据,是网站中比较重要的一个内容 GET 和 POST 方法 GET 和 POST 的区别 URL,全称是"统一资源定位符".用于对应互联网上的每一个文件.而 GET.POST 等方法,本质上就是对这个 URL 进行一系列的操作.GET.POST.PUT.DELETE 分别对应对资源进行查.改.增.删.因此,任何对系统状态有改变的请求(例如,对数据库的数据进行修改)都应该使用 POST .GET 方法用于不影响系统状态的请求,如搜索或者是请求发送一些数据

django中的FBV和CBV

django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 看代码: urls.py from django.conf.urls import url, include # from django.contrib import admin from mytest import views urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^in

Django中的Model(操作表)

一.基本操作 1 # 增 2 3 models.Tb1.objects.create(c1='xx', c2='oo') #增加一条数据,可以接受字典类型数据 **kwargs 4 5 obj = models.Tb1(c1='xx', c2='oo') 6 obj.save() 7 dic = {'c1':'xx','c2':'oo'} models.Tb1.objects.create(**dic) #Form的产出结果是一个字典,可以根据这个Form的字典和**直接在数据库创建数据 8 #