1
我一直在研究django註冊腳本,它正在工作,沒有改變它停止工作的任何東西,我不完全確定爲什麼。當我註冊時,它將我帶到登錄頁面,並表示用戶名和密碼不匹配。就好像它甚至沒有將數據傳遞給視圖。我不確定這裏是我的代碼,它可能只是一個Django事情,我做錯了。Django用戶註冊剛剛停止工作
經過進一步的調查,我意識到它不是調用views.py中的註冊函數。
我加了一些打印線到我的register視圖以查看它是否正在執行
@csrf_protect
def register(request):
print 'test'
if request.method == 'POST':
form = RegistrationForm(request.POST)
print form
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
save_userdata = UserProfile(username = form.cleaned_data['username'] ,
title=form.cleaned_data['profile_title'],
first_name = form.cleaned_data['first_name'],
last_name = form.cleaned_data['last_name'],
about = form.cleaned_data['about'],
user_score = 0,
dob = form.cleaned_data['dob'],
occupation = form.cleaned_data['occupation'],
pub_date = datetime.now())
save_userdata.save()
return HttpResponseRedirect('/register/success/')
else:
form = RegistrationForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response(
'register.html',
variables,
)
from django.conf.urls import patterns, include, url
from django.contrib import admin
from ChompMe.views import *
urlpatterns = patterns('',
url(r'^$', 'django.contrib.auth.views.login'),
url(r'^logout/$', logout_page),
url(r'^accounts/login/$', 'django.contrib.auth.views.login'), # If user is not login it will redirect to login page
url(r'^register$', register),
url(r'^register/$', register),
url(r'^home$', home),
url(r'^home/$', home),
url(r'^register/success/$', register_success),
url(r'^register/success$', register_success),
url(r'^admin/', include(admin.site.urls)),
url(r'^gettoken/$', getToken),
url(r'^addfriend/$', addFriend),
url(r'^[A-Za-z0-9_.]+$', friends),
)
@csrf_protect
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
save_userdata = UserProfile(username = form.cleaned_data['username'] ,
title=form.cleaned_data['profile_title'],
first_name = form.cleaned_data['first_name'],
last_name = form.cleaned_data['last_name'],
about = form.cleaned_data['about'],
user_score = 0,
dob = form.cleaned_data['dob'],
occupation = form.cleaned_data['occupation'],
pub_date = datetime.now())
save_userdata.save()
return HttpResponseRedirect('/register/success/')
else:
form = RegistrationForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response(
'register.html',
variables,
)
def register_success(request):
return render_to_response(
'success.html',
)
#files.py
import re
from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
class RegistrationForm(forms.Form):
username = forms.RegexField(regex=r'^\w+$', widget=forms.TextInput(attrs=dict(required='True', max_length=30)),
label=_("Username"), error_messages={ 'invalid': _("This value must contain only letters, numbers and underscores.") })
email = forms.EmailField(widget=forms.TextInput(attrs=dict(required='True', max_length=30)), label=_("Email address"))
password1 = forms.CharField(widget=forms.PasswordInput(attrs=dict(required='True', max_length=30, render_value='False')), label=_("Password"))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=dict(required='True', max_length=30, render_value='False')), label=_("Password (again)"))
dob = forms.RegexField(regex=r'^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$',
widget=forms.TextInput(attrs=dict(required='True', max_length=11)),
label=_("Birthday YYYY-MM-DD"), error_messages={ 'invalid':_("This must be in the proper format YYYY-MM-DD")})
first_name = forms.CharField(widget=forms.TextInput(attrs=dict(required='True', max_length=20)), label=_("First Name"))
last_name = forms.CharField(widget=forms.TextInput(attrs=dict(required='True', max_length=20)), label=_("Laast Name"))
about= forms.CharField(widget=forms.TextInput(attrs=dict(required='True', max_length=90000)), label=_("About"))
occupation = forms.CharField(widget=forms.TextInput(attrs=dict(required='True', max_length=40)), label=_("Occupation"))
profile_title = forms.CharField(widget=forms.TextInput(attrs=dict(required='True', max_length=40)), label=_("Profile Title"))
def clean_userdata(self):
self.cleaned_data['dob'] = self.dob
self.cleaned_data['first_name'] = self.first_name
self.cleaned_data['last_name'] = self.last_name
self.cleaned_data['about'] = self.about
self.cleaned_data['occupation'] = self.occupation
self.cleaned_data['profile_title'] = self.profile_title
def clean_username(self):
try:
user = User.objects.get(username__iexact=self.cleaned_data['username'])
except User.DoesNotExist:
return self.cleaned_data['username']
raise forms.ValidationError(_("The username already exists. Please try another one."))
def clean(self):
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError(_("The two password fields did not match."))
return self.cleaned_data
模板
{% extends "base.html" %}
{% block title %}User Registration{% endblock %}
{% block head %}User Registration{% endblock %}
{% block content %}
<form method="post" action=".">
{% csrf_token %}
<table border="0">
{{ form.as_table }}
</table>
<input type="submit" value="Register" />
</form>
<a href="/">Login</a>
{% endblock %}
你能顯示出與表格模板? – GwynBleidD 2015-02-08 19:48:32
{%extends「base.html」%} {%block title%}用戶註冊{%endblock%} {%block head%}用戶註冊{%endblock%} {%block content%}
Login {%endblock%} – 2015-02-08 19:48:57@GwynBleidD我包括它請幫助我不明白爲什麼它不再執行註冊碼。 – 2015-02-08 19:50:01