簡體   English   中英

無法在html模板中填充django生成的表單

[英]Cannot populate django generated form in html template

我正在嘗試使用Django的表單模塊來創建和顯示表單。 我執行的以下代碼沒有錯誤,但未填充HTML表單。 我確保我正在加載正確的模板。 我也確定當我轉到某個URL時會觸發正確的視圖。 我在下面從視圖,模型,表單和模板文件中發布一些相關代碼。 我通過反復試驗進行了很多調試,但是無法找到問題的根源。

views.py

from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from app.forms import RegistrationForm

def registration(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/profile/')
    if request.method == 'POST':
        pass
    else:
        ''' user is not submitting the form, show them a blank registration form '''
        form = RegistrationForm()
        context = {'form': form}
        return render_to_response('register.html', context, context_instance=RequestContext(request))

register.html

{% extends "base.html" %}
{% block content %}


<form action="/register/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>


{% endblock %}

表格

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from app.models import Agent

class RegistrationForm(ModelForm):
    username = forms.CharField( label=(u'User Name'), required=True )
    first_name = forms.CharField( label=(u'First Name'), required=True )
    last_name = forms.CharField( label=(u'Last Name'), required=True )
    birthday = forms.DateField( label=(u'Date of birth'), required=True )
    email = forms.EmailField( label=(u'Email Address'), required=True )
    password = forms.CharField( label=(u'Password'), widget=forms.PasswordInput(render_value=False), required=True )
    password_confirm = forms.CharField( label=(u'Confirm Password'), widget=forms.PasswordInput(render_value=False), required=True )

    class Meta:
        model = Agent
        #exclude = ['username',]

    def clean_username(self):
        username = self.cleaned_data['username']
        try:
            User.objects.get(username=username)
        except User.DoesNotExist:
            return username
        raise forms.ValidationError("That username is already taken, please select another.")

    def clean(self):
        if self.cleaned_data['password'] != self.cleaned_data['password_confirm']:
            raise forms.ValidationError("The passwords did not match.  Please try again.")
        return self.cleaned_data       

models.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class Agent(models.Model):
    username = models.OneToOneField(User)
    birthday = models.DateField()
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    email = models.EmailField()

    def __unicode__(self):
        return self.last_name + ", " + self.first_name

必須在base.html中添加內容塊引用

{% block content %}
{% endblock %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM