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>
上一篇:Android已上线应用开源分享中(第二季)


下一篇:Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)