无法打开注册表单页面

时间:2017-11-13 17:35:33

标签: python django

尝试创建注册表单,我正面临一个问题。所以,下面是我的python页面:

form.py

from .models import User
from django import forms
from django.forms import ModelForm

class SignUpForm(ModelForm):
   class Meta:
        model = User
        fields = ('username','password','email')

models.py

from django.db import models
#from django.core.urlresolvers import reverse
from django.contrib.auth.models import User

class Registration(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

urls.py

urlpatterns = [
  url(r'^register/$', views.SignUpFormView, name= 'register'),
]

的test.html

{% extends 'user_info/base.html' %}
{% block body %}
{% block content %}

<form method="POST">
    {% csrf_token %}
    {{ form }}
  username:<br>
  <input type="text" name="username"><br>
  password:<br>
  <input type="text" name="password"><br>
  email:<br>
  <input type="text" name="email"><br>

    <input type="submit" value="Submit" />
</form>

{% endblock %}
{% endblock %}

views.py

def SignUpFormView(request):
    template_name = 'test.html'
    try:
        if request.method == 'POST':
            form = SignUpForm(request.POST)
            if form.is_valid():
                form.save()
                username = form.cleaned_data.get('username')
                password = form.cleaned_data.get('password')
                email = form.cleaned_data.get('email')
                return render(request, template_name, {'form':form})
    except ValueError:
        print("Oops!  That was not a valid entry, try again...")

    else:
        SignUpForm()

    return render(request, 'user_info/about.html')

问题是,我在views.py中的“SignUpFormView”函数没有输入“if”语句,它直接转到“else”。我好像迷失在这里。 我有'about.html'。我也没有看到任何错误。我觉得很奇怪。请帮忙。

注意:我使用的是Django默认的内置“用户”模型,我不想创建任何自定义模型。

修改了views.py

def SignUpFormView(request):
    user_form = 'SignUpForm'
    template_name = 'test.html'

    if request.method == 'POST':
        form = user_form(request.POST)
        if form.is_valid():
            form.save()
            #username = form.cleaned_data.get('username')
            #password = form.cleaned_data.get('password')
            #email = form.cleaned_data.get('email')
            #user.save()
            return render(request, template_name, {'form':form})


    else:
        SignUpForm()

    return render(request, 'user_info/about.html')

修改了forms.py

from .models import User
from django import forms
from django.forms import ModelForm



class SignUpForm(forms.ModelForm):
    #password = forms.Charfield(widget=forms.PasswordInput)
    class Meta:
       model = User
       fields = ('username','password','email')

修改了test.html

{% extends 'user_info/base.html' %}


{% block body %}
{% block content %}


{% for error in form.errors %}
    {{ form.errors | default_errors }}
{% endfor %}

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    {% for field in form %}
        <p>

      username:<br>
      <input type="text" name="username"><br>
      password:<br>
      <input type="text" name="password"><br>
      email:<br>
      <input type="text" name="email"><br>
      {% for error in field.errors %}
           <p style="color: red">{{ error }}</p>
    {% endfor %}
        </p>
    {% endfor %}
    <button type="submit" value="Submit">sign up </button>
</form>


{% endblock %}
{% endblock %}

0 个答案:

没有答案