如何正确使用 Django Forms
2个回答
2018-07-25 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
1. Django Forms的强大之处
有些django项目并不直接基宴呈现HTML, 二是以API框架的形式存在, 但你可能没有想到, 在这些API形式的django项目搏悄银中也用到了django forms. django forms不仅仅是用来呈现HTML的, 他们最强的地方应该运圆是他们的验证能力. 下面我们就介绍几种和Django forms结合使用的模式:
2. 模式一: ModelForm和默认验证
最简单的使用模式便是ModelForm和model中定义的默认验证方式的组合:
# myapp/views.py
from django.views.generic import CreateView, UpdateView
from braces.views import LoginRequiredMixin
from .models import Article
class ArticleCreateView(LoginRequiredMixin, CreateView):
model = Article
fields = ('title', 'slug', 'review_num')
class ArticleUpdateView(LoginRequiredMixin, UpdateView):
model = Article
fields = ('title', 'slug', 'review_num')
正如以上代码中看到的一样:
ArticleCreateView和ArticleUpdateView中设置model为Article
两个view都基于Article model自动生成了ModelForm
这些ModelForm的验证, 是基于Article model中定义的field转换而来的
3. 模式二, 在ModelForm中修改验证
有些django项目并不直接基宴呈现HTML, 二是以API框架的形式存在, 但你可能没有想到, 在这些API形式的django项目搏悄银中也用到了django forms. django forms不仅仅是用来呈现HTML的, 他们最强的地方应该运圆是他们的验证能力. 下面我们就介绍几种和Django forms结合使用的模式:
2. 模式一: ModelForm和默认验证
最简单的使用模式便是ModelForm和model中定义的默认验证方式的组合:
# myapp/views.py
from django.views.generic import CreateView, UpdateView
from braces.views import LoginRequiredMixin
from .models import Article
class ArticleCreateView(LoginRequiredMixin, CreateView):
model = Article
fields = ('title', 'slug', 'review_num')
class ArticleUpdateView(LoginRequiredMixin, UpdateView):
model = Article
fields = ('title', 'slug', 'review_num')
正如以上代码中看到的一样:
ArticleCreateView和ArticleUpdateView中设置model为Article
两个view都基于Article model自动生成了ModelForm
这些ModelForm的验证, 是基于Article model中定义的field转换而来的
3. 模式二, 在ModelForm中修改验证
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
2017-05-08
展开全部
form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差)
1.首先,建好一个工程
django-admin.py startproject myblog ,
再创建个model
python manage.py startapp User,
在model里创建一些数据类型
class Users(models.Model):
uname = models.CharField(max_length=30,unique=True,verbose_name="用户名")
upet = models.CharField(max_length=30,verbose_name="昵称")
upawd = models.CharField(max_length=30,verbose_name="密码")
email = models.EmailField(verbose_name="电子邮件")
url = models.URLField(verbose_name="网址")
,到此,基本项目做亏腔好,开始使用form
2. 在model目录下新建forms.py
有两种写法:
(1)定义表单模型
class UserForm(forms.Form):
uname = forms.CharField(max_length=100 ,label='用户名')
email = forms.EmailField(label='电茄空册子邮件')
upet = forms.CharField(max_length=30,required=False,label='昵称')
upawd = forms.CharField(label='密码',widget=forms.Textarea)
url = forms.URLField(required=False ,label='网址')
(2)继承model
from django.forms import ModelForm
from myblog.users.models import Users
class UsersForm(ModelForm):
class Meta:
model = Users
fields = ('uname','upet', '颤宏upawd','email','url')
3.在view视图中 ,做表单验证
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
username=form.cleaned_data['uname']
usernick=form.cleaned_data['upet']
pawd1=form.cleaned_data['upawd']
email=form.cleaned_data['email']
weburl=form.cleaned_data['url']
Users(uname=username,upet=usernick,upawd=pawd1,email=email,url=weburl).save()
return HttpResponseRedirect('/index/')
else:
return render_to_response('contact.html', {'form': form,})
4.在html页面,代码超简单,这点django做的不错
<form id="your-profile" action="/contact" method="post">
<table class="form-table">
<!--{{ form.as_ul }}--> # 这是第一种写法,在<ul> 显示表单
<!-- {{ form.as_p }}--> # 这是第二种写法,在<p> 显示表单
<!--{{ form.as_table }}--> # 这是第三种写法,在<table>显示表单
{% for field in form %} # 这是第四种写法,以循环形式显示表单
{{ field.label_tag }}:{{ field }}
{{ field.errors }}
{% endfor %}
</table>
<p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="注册信息" /></p>
</form>
5.在url.py中配置
(r'^contact',contact),
1.首先,建好一个工程
django-admin.py startproject myblog ,
再创建个model
python manage.py startapp User,
在model里创建一些数据类型
class Users(models.Model):
uname = models.CharField(max_length=30,unique=True,verbose_name="用户名")
upet = models.CharField(max_length=30,verbose_name="昵称")
upawd = models.CharField(max_length=30,verbose_name="密码")
email = models.EmailField(verbose_name="电子邮件")
url = models.URLField(verbose_name="网址")
,到此,基本项目做亏腔好,开始使用form
2. 在model目录下新建forms.py
有两种写法:
(1)定义表单模型
class UserForm(forms.Form):
uname = forms.CharField(max_length=100 ,label='用户名')
email = forms.EmailField(label='电茄空册子邮件')
upet = forms.CharField(max_length=30,required=False,label='昵称')
upawd = forms.CharField(label='密码',widget=forms.Textarea)
url = forms.URLField(required=False ,label='网址')
(2)继承model
from django.forms import ModelForm
from myblog.users.models import Users
class UsersForm(ModelForm):
class Meta:
model = Users
fields = ('uname','upet', '颤宏upawd','email','url')
3.在view视图中 ,做表单验证
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
username=form.cleaned_data['uname']
usernick=form.cleaned_data['upet']
pawd1=form.cleaned_data['upawd']
email=form.cleaned_data['email']
weburl=form.cleaned_data['url']
Users(uname=username,upet=usernick,upawd=pawd1,email=email,url=weburl).save()
return HttpResponseRedirect('/index/')
else:
return render_to_response('contact.html', {'form': form,})
4.在html页面,代码超简单,这点django做的不错
<form id="your-profile" action="/contact" method="post">
<table class="form-table">
<!--{{ form.as_ul }}--> # 这是第一种写法,在<ul> 显示表单
<!-- {{ form.as_p }}--> # 这是第二种写法,在<p> 显示表单
<!--{{ form.as_table }}--> # 这是第三种写法,在<table>显示表单
{% for field in form %} # 这是第四种写法,以循环形式显示表单
{{ field.label_tag }}:{{ field }}
{{ field.errors }}
{% endfor %}
</table>
<p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="注册信息" /></p>
</form>
5.在url.py中配置
(r'^contact',contact),
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询