编码员们好。
本教程旨在帮助初学者适应Django框架,特别是这个神奇的框架所提供的 "开箱即用 "的**认证系统**。对于新手来说,Django是一个开源的网络框架,由经验丰富的开发人员在许多开源爱好者的帮助下设计并积极支持。
谢谢你的阅读!- 内容由**App Generator**提供。
本教程涵盖的主题
- 用户--用于管理认证信息的核心实体
- 如何使用Django CLI创建一个新用户
- 如何创建一个超级用户
- 使用UI(表单、控制器、视图)创建一个用户
用户模型
正如Django官方文档中提到的,用户模型代表了用于保存和管理认证的核心实体。User 模型所管理的字段可以在下面找到。
在Django中创建一个新用户的最简单方法可能是使用CLI(Django shell)。如果你还没有一个Django项目,可以随时克隆AppSeed团队提供的一个开源样本来解释许多Django概念。
$ git clone https://github.com/app-generator/django-learn-by-coding.git
$ cd django-learn-by-coding
创建一个虚拟环境 - 基于Linux的系统
$ virtualenv env
$ source env/bin/activate
对于Windows系统,语法是不同的。
$ virtualenv env
$ .\env\Scripts\activate
安装Django
$ pip install django
创建用户 - Django CLI
使用终端的用户创建过程通常与允许我们访问管理部分的superuser 。对于新手来说,admin 部分管理着我们项目中定义的注册用户、组。
$ # We are in the ROOT of the project
$ python manage.py createsuperuser
sername (leave blank to use 'test'): admin
Email address: test@appseed.us
Password: ********
Password (again): ********
Superuser created successfully.
一旦superuser 管理员被创建,我们就可以访问admin 部分,并与我们项目注册的所有模型进行交互。让我们使用Django CLI来探索用户。
>>> from django.contrib.auth.models import User
>>> User.objects.all()
<QuerySet [<User: admin>]>
使用CLI,我们可以探索所有的属性,当然也可以更新字段。
创建一个新的(普通)用户
>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('test', 'test@appseed.us', 'Super_S3cret111')
我们可以看到,使用User模型提供的create-user helper可以很容易地创建新的用户--让我们再次检查终端中的所有注册用户。
>>> >>> User.objects.all()
<QuerySet [<User: admin>, <User: test>]>
通过用户界面创建用户
使用控制台来创建和管理用户可能很有趣,但在我们的项目中可能也很有用,允许用户使用公共网页来注册自己。要做到这一点,我们需要一个简单的页面来暴露表单,并需要一个后端来处理发送给用户的信息。
创建注册表格
class SignUpForm(UserCreationForm):
username = forms.CharField(
widget=forms.TextInput(
attrs={
"placeholder" : "Username"
}
))
email = forms.EmailField(
widget=forms.EmailInput(
attrs={
"placeholder" : "Email"
}
))
password1 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"placeholder" : "Password"
}
))
password2 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"placeholder" : "Password check"
}
))
创建控制器
def register_user(request):
# A user-friendly message
msg = None
# User submits the credentials
if request.method == "POST":
# Initialize the from POST data
form = SignUpForm(request.POST)
# Check all constraints (one line)
if form.is_valid():
# Create the user
form.save()
msg = 'User created successfully.'
else:
msg = 'Form is not valid'
# Show the SignUp Page
else:
form = SignUpForm()
return render(request, "accounts/register.html", {"form": form, "msg" : msg })
显示表单并邀请用户注册的页面
<form role="form" method="post" action="">
{% csrf_token %}
<div>
{{ form.username }}
</div>
<span class="text-error">{{ form.username.errors }}</span>
<div>
{{ form.email }}
</div>
<span class="text-error">{{ form.email.errors }}</span>
<div>
{{ form.password1 }}
</div>
<span class="text-error">{{ form.password1.errors }}</span>
<div>
{{ form.password2 }}
</div>
<span class="text-error">{{ form.password2.errors }}</span>
<button type="submit" name="register">Register</button>
</form>
用户注册机制
- 用户看到注册页面
- 用户输入所有字段
- 提交表单,控制器收到所有信息(用户名,密码)。
- 如果表格是有效的,表格被保存,用户被创建
- 一个确认信息被返回给用户
上面的例子使用一个表单来创建用户,但我们也可以更新代码,使用create-user 方法。
def register_user(request):
# A user-friendly message
msg = None
# User submits the credentials
if request.method == "POST":
# Initialize the from POST data
form = SignUpForm(request.POST)
# Check all constraints (one line)
if form.is_valid():
username = form.cleaned_data.get("username") # <-- UPDATED
email = form.cleaned_data.get("email") # <-- UPDATED
raw_password = form.cleaned_data.get("password1") # <-- UPDATED
# Create user: UPDATED
new_user = User.objects.create_user(username, email, raw_password)
msg = 'User created successfully.'
else:
msg = 'Form is not valid'
# Show the SignUp Page
else:
form = SignUpForm()
return render(request, "accounts/register.html", {"form": form, "msg" : msg })
谢谢你的阅读!欢迎在评论区发表AMA。更多资源,请访问。