Registration based on form components

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"}
        )
    )

 

Guess you like

Origin www.cnblogs.com/liujie12/p/12714862.html
Recommended