使用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>