Django 手动创建用户账户

1 投票
3 回答
4853 浏览
提问于 2025-04-18 13:21

Django自带一个管理页面,里面有一个功能可以添加、编辑或删除用户(以及用户的认证信息)。

不过,我需要创建一个自定义的表单,涉及到以下模型:

employee/models.py

# Stores profile details such as DoB, Martial Status, TFN and so on
class Profile(models.Model):
    user = models.OneToOneField(User)

    MARTIAL_STATUS = (
        ('s', 'Single'),
        ('m', 'Married'),
        ('d', 'Divorced'),
        ('w', 'Widowed')
    )
    martial = models.CharField(max_length=1, choices=MARTIAL_STATUS, null=True)
    tfn = models.CharField(max_length=200, blank=False)

我想做的是有一个表单,用户可以在里面输入用户名、名字等信息,以及我模型中需要的所有字段。

到目前为止,这是我所做的django-form

注意,必须先创建一个账户,才能插入其他信息(来自不同的模型)。

补充一下:我使用的是Django 1.6版本。

3 个回答

0

user模型的下拉框旁边应该有一个+符号,这样用户可以快速添加,就像下面这个图示。

在这里输入图片描述

如果user模型已经在admin中注册了,我觉得你可以直接创建它。

或者

根据Ruddra上面的回答,你需要先创建所有用户的资料,然后就可以直接填写表单了。

0

我通常会从文档中的完整示例开始,然后根据我的需求进行调整。这样你可以保留Django的权限功能,同时还可以添加一些自定义权限

我不知道你在项目进展到什么阶段,但如果你刚开始的话,我建议你使用twoscoops模板或者Daniel Greenfield的cookiecutter-django。这两个模板都实现了django all auth库,非常适合用来做社交登录。

4

如果我理解得没错,你需要为你的管理员网站的个人资料表单创建自定义用户。为什么不试试使用django的命令行呢?比如:

在manage.py所在的文件夹,打开终端或命令提示符,然后输入:

>>python manage.py shell

In [1]: from django.contrib.auth.models import User

In [2]: i=User(username="test")

In [3]: i.save()

In [4]: i.set_password('test')

In [5]: i.save()

你可以用这个用户名和密码登录网站。

编辑:

假设你的管理员网址是 www.mysite.com/admin,你可以直接通过这个链接访问用户管理: www.mysite.com/admin/auth/user/add/。管理员界面看起来是这样的: 这里插入图片描述

如果你想添加电子邮件地址和其他信息,可以点击 保存并继续编辑,如下图所示: 这里插入图片描述

这会让你进入更新用户信息的页面。这里插入图片描述

如果你想在管理员网站之外创建用户,那么使用 UserCreationForm 是一种更简单的方法来实现用户注册。

from django.views.generic.edit import CreateView
from django.contrib.auth.forms import UserCreationForm

urlpatterns = patterns('',
    url('^register/', CreateView.as_view(
            template_name='register.html',
            form_class=UserCreationForm,
            success_url='/'
    )),
    url('^accounts/', include('django.contrib.auth.urls')),

    # rest of your URLs as normal
)

不过你需要在这里创建一个 register.html,像这样:

<form action="" method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Create" />
</form>

详细信息请查看: http://www.obeythetestinggoat.com/using-the-built-in-views-and-forms-for-new-user-registration-in-django.html

撰写回答