Django


 使用Django工程自动创建的auth_user表来存储用户信息

在app目录下创建forms.py

mysite/music/forms.py


from django.contrib.auth.models import User

from django import forms


class UserForm(forms.ModelForm):

    password = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ['username', 'email', 'password']
mystie/muisc/views.py


from django.contrib.auth import authenticate, login
from django.views.generic import View
from .forms import UserForm


class UserFormView(View):
    form_class = UserForm
    template_name = 'music/registration_form.html'

    # display blank form
    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

    # process form data
    def post(self, request):
        form = self.form_class(request.POST)

        if form.is_valid():

            user = form.save(commit=False)              #先不提交

            # cleaned (normalized) data
            username = form.cleaned_data['username']    #防止注入
            password = form.cleaned_data['password']
            user.set_password(password)                #加密
            user.save()

            # return User objects if credential are correct
            user = authenticate(username=username, password=password) #注册

            if user is not None:

                if user.is_active:
                    login(request, user)
                    return redirect('music:index')

            return render(request, self.template_name, {'form': form})
mysite/music/urls.py

...
# /muisc/register/
    url(r'^register/$', views.UserFormView.as_view(), name='register'),
...

music/registration_form.html
<form action="#" method="post" class="form-horizontal">
  {% csrf_token %}
  {% include 'music/form-template.html' %}
  </form>


music/form-template.html

{% for field in form %}
<div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <span class="text-danger small">{{ field.errors }}</span> </div> <label class="label-control col-sm-2">{{ field.label_tag }}</label> <div class="col-sm-10">{{ field }}</div> </div> {% endfor %} <div class="form-group"> <div class="col-sm-offset-2"> <button type="submit" class="btn btn-success">Submit</button> </div> </div>
KEEP LEARNING!
原文地址:https://www.cnblogs.com/roronoa-sqd/p/5424448.html