Django中forms的一些用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中forms的一些用法相关的知识,希望对你有一定的参考价值。

一、原生的form
In 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)

 

以上是关于Django中forms的一些用法的主要内容,如果未能解决你的问题,请参考以下文章

django form的函数用法

Django之中间件与form其他用法

Django之路——form modelform formset modelformset的各种用法

如何在Django视图中使用for循环返回每次迭代[关闭]

Django学习详解Django admin高级用法

Django学习详解Django admin高级用法