Django 从 POST 创建对象

3 投票
2 回答
7386 浏览
提问于 2025-04-16 06:17

我有一个关于Django视图的问题。

这里有一段示例代码:

def example register ( request ) :
if request.method == ’POST ’ :
username = request.POST.get ( ’ username ’ )
password = request.POST.get ( ’ password ’ )
email = request.POST.get (’email’)
user = User.objects .create_user ( username
, email
, password )
user . save ()
return HttpResponseRedirect (
’/ example /login / ’)

在上面的例子中,我们是一个一个地获取值,比如用户名、密码等等。如果我有很多这样的字段,那我怎么能在一行代码中处理它们呢?我在想用字典,但找不到方法。任何帮助都很感谢。谢谢!

2 个回答

0

那你为什么要这么做呢?

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
and then handle it like that:
form = UserCreationForm(request.POST)
if form.is_valid():
    username = form.cleaned_data['username']
    password = form.cleaned_data['password1']
    email = form.cleaned_data['email']
    newuser = User.objects.create_user(username, email, password)
    user = authenticate(username=username, password=password)
    login (request, user)
    return HttpResponseRedirect('/some/page/which/is/not/logginpage')#cause user is already logged in

这可能不是最优雅的方法,但它应该能很好地说明如何使用表单,然后进行身份验证并让用户登录。

5

你应该使用表单和模型表单来从请求中收集这些数据。

[1] http://docs.djangoproject.com/en/dev/topics/forms/

[2] http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

撰写回答