Registration based on form components
urls.py
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
#注册
path('register/', views.register),
]
views.py
#Register view function
def register (request): form_obj = forms.RegForm ()
if request.method == "POST": form_obj = forms.RegForm (request.POST) #Help
me check if form_obj.is_valid (): #Verified
, go to the database to create a new user # So the verified data is stored in form_obj.cleaned_data (in a large dictionary)
# print (form_obj.cleaned_data) # {'name': '某某 某', 'pwd': '1234567', 're_pwd': '1234567'}
del form_obj.cleaned_data ["re_password"] # delete re_pwd in the dictionary because this attribute is not in the database
models.UserInfo.objects.create_user (** form_obj.cleaned_data )
return HttpResponse ("Registration succeeded!")
else:
print (form_obj.errors)
return HttpResponse ("Error!")
return render(request, 'register.html',{"form_obj":form_obj})
register.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>注册</title> <meta name="viewport" content="width=device-width, initial-scale=1"> {% load static %} <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"> <style> .container { margin-top : 100px ; } { # avatar picture # } #avatar_img { width : 80px ; height : 50px ; } { # hide the button to select the picture # } #id_avatar { display : none ; } </ style > </ head > < body > < div class = "container" > < div class="row"> <div class="col-md-offset-3 col-md-6"> <form action="" method="post" class="form-horizontal" enctype="multipart/form-data"> {% csrf_token %} {# 用户名#} <div class="form-group {% if form_obj.username.error.0 %}has-error{% endif %}"> <label class="col-sm-2 control-label" for="{{ form_obj.username.id_for_label }}">{{ form_obj.username.label }}</label> <div class="col-sm-10"> {{ form_obj.username }} <span class="help-block">{{ form_obj.username.error.0 }}</span> </div> </div> {# 密码#} <div class="form-group {% if form_obj.password.error.0 %}has-error{% endif %}"> <label class="col-sm-2 control-label" for="{{ form_obj.password.id_for_label }}">{{ form_obj.password.label }}</label> <div class="col-sm-10"> {{ form_obj.password }} <span class="help-block">{{ form_obj.password.error.0 }}</span> </div> </div> {# 确认密码#} <div class="form-group {% if form_obj.re_password.error.0 %}has-error{% endif %}"> <label class="col-sm-2 control-label" for="{{ form_obj.re_password.id_for_label }}">{{ form_obj.re_password.label }}</label> <div class="col-sm-10"> {{ form_obj.re_password }} <span class="help-block">{{ form_obj.re_password.error.0 }}</span> </div> </div> {# 邮箱#} <div class="form-group {% if form_obj.email.error.0 %}has-error{% endif %}"> <label class="col-sm-2 control-label" for = "{{form_obj.email.id_for_label}}" > {{form_obj.email.label}} </ label > < div class = "col-sm-10" > {{form_obj.email}} < span class = "help-block" > {{form_obj.email.error.0}} </ span > </ div > </ div > {# Because the avatar does not have this input option in forms.py, you can only write your own #} < div class = "form-group" > <label class="col-sm-2 control-label"> Avatar </ label > < div class = "col-sm-10" > {# Achieving the click image is equivalent to clicking the select avatar button #} < label for = "id_avatar" > < img id = "avatar_img" src = " /static/img/girl.png " alt =" " > </ label > < input type =" file " name =" avatar " id =" id_avatar " > </ div > </ div > <div class="form-group"> <div class="col-sm-offset-2 col-sm-2"> <input type="submit" value="注册" class="btn btn-success"> </div> </div> </form> </div> </div> </div> <script src="{% static 'jquery-3.2.1.min.js' %}"></script> <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script> </body> </html>
Forms.py written by myself
'' '
Form class used by BBS
' ''
from django import forms
#Define
a registered form class class RegForm (forms.Form):
username = forms.CharField (
max_length = 16,
label = "username",
widget = forms.widgets.TextInput (
attrs = {"class": "form-control"}
),
error_messages = {
"max_length": "
The user name can be up to 16 digits", "require": "The user name cannot be empty"
}
)
password = forms.CharField (
min_length = 6,
label = "password",
error_messages = {
"min_length":"Password must be at least 6 digits",
"require": "Password cannot be empty"
},
widget=forms.widgets.PasswordInput(
render_value=True,
attrs={"class":"form-control"}
)
)
re_password = forms.CharField(
min_length=6,
label="确认密码",
error_messages={
"require": "确认密码不能为空"
},
widget=forms.widgets.PasswordInput(
render_value=True,
attrs={"class": "form-control"}
)
)
email = forms.EmailField(
label="邮箱",
error_messages={
"require": "邮箱不能为空"
},
widget=forms.widgets.EmailInput(
attrs={"class": "form-control"}
)
)