如何在Django中进行表单验证/处理?
这是我的 views.py 文件
from django.conf import settings
from django.shortcuts import render_to_response
from django.template import RequestContext, loader
from django import forms
from django.core import validators
from django.contrib.auth.models import User
from django.utils import simplejson
def PermLayer(request):
users = User.objects.all()
if request.method == 'POST':
form = PermForm(request.POST)
if form.is_valid():
user = form.cleaned_data['user']
rad1=form.cleaned_data['radio1']
rad2=form.cleaned_data['radio2']
perm = Permission()
perm.user = user
perm.table = ContentType.objects.get_for_model(TableToAddPermissionFor)
perm.permi = rad1 + rad2
perm.save()
return render_to_response('permission.html',{'user':users})
else:
form = PermForm()
return render_to_response('permission.html', {'user':users})
这是我的 forms.py 文件
from django import forms
from django.forms.widgets import RadioSelect
class PermForm(forms.Form):
user = forms.CharField(max_length=100)
RADIO_CHOICES1 = [['1','Radio 1'],['2','Radio 2']]
RADIO_CHOICES2 = [['3','Radio 2'],['4','Radio 2']]
radio = forms.ChoiceField( widget=RadioSelect(), choices=RADIO_CHOICES1)
radio = forms.ChoiceField( widget=RadioSelect(), choices=RADIO_CHOICES2)
我想知道怎么验证表单,也就是说,我想检查用户是否在数据库里,并获取他们的主键。我知道需要用到 django.db 中的 Q,但这方面的文档有点缺乏。
1 个回答
2
如果我理解得没错,你是想检查用户是否在数据库里存在吧?
那你为什么不在PermForm(forms.py文件)里把用户字段设置为ForeignKey(User)呢?
另外,你可以通过下面的方式来获取用户:
user = User.objects.get(username=form.cleaned_data['user'])
用户的主键就是 user.id