2015-02-08 105 views
1

我一直在研究django註冊腳本,它正在工作,沒有改變它停止工作的任何東西,我不完全確定爲什麼。當我註冊時,它將我帶到登錄頁面,並表示用戶名和密碼不匹配。就好像它甚至沒有將數據傳遞給視圖。我不確定這裏是我的代碼,它可能只是一個Django事情,我做錯了。Django用戶註冊剛剛停止工作

經過進一步的調查,我意識到它不是調用views.py中的註冊函數。 enter image description here

我加了一些打印線到我的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 %} 
+0

你能顯示出與表格模板? – GwynBleidD 2015-02-08 19:48:32

+0

{%extends「base.html」%} {%block title%}用戶註冊{%endblock%} {%block head%}用戶註冊{%endblock%} {%block content%}

{%csrf_token%} <表邊界=「 0 」> {{form.as_table}}
Login {%endblock%} – 2015-02-08 19:48:57

+0

@GwynBleidD我包括它請幫助我不明白爲什麼它不再執行註冊碼。 – 2015-02-08 19:50:01

回答

1

控制檯顯示您的POST請求轉到/,但它有指向/register/,對吧?改變你的形式action給定網址:

<form action="{% url "register" %}" method="post"> 

+

urlpatterns = patterns('', 
    url(r'^register$', register, name='register'), 
    ... 
)