Django 从模型创建表单
我正在将我的第一步移到Django中,并尝试通过以下链接遵循教程: 但是我找不到表格。它只是返回一个白色页面 如果我遗漏了什么,有人能解释一下吗 my models.py:Django 从模型创建表单,django,forms,Django,Forms,我正在将我的第一步移到Django中,并尝试通过以下链接遵循教程: 但是我找不到表格。它只是返回一个白色页面 如果我遗漏了什么,有人能解释一下吗 my models.py: from django.db import models from django.forms import ModelForm class UserProfile(models.Model): name = models.CharField(max_length=30) surname = models.C
from django.db import models
from django.forms import ModelForm
class UserProfile(models.Model):
name = models.CharField(max_length=30)
surname = models.CharField(max_length=30)
email = models.EmailField()
tel = models.CharField(max_length=30, null=True, blank=True)
def __unicode__(self):
return '%s %s' % (self.surname, self.name)
class Ad(models.Model):
title = models.CharField(max_length=50)
descr = models.TextField()
city = models.CharField(max_length=30)
price = models.FloatField(null=True, blank=True)
img = models.ImageField(upload_to='./uploaded_imgs', null=True, blank=True)
dateIn = models.DateField(auto_now_add=True)
dateExp = models.DateField(auto_now_add=True)
codC = models.ForeignKey('Cat')
codU = models.ForeignKey('UserProfile')
def __unicode__(self):
return '%s - %s' % (self.title, self.dateIn)
class Cat(models.Model):
cat = models.CharField(max_length=35, primary_key=True)
def __unicode__(self):
return self.cat
my forms.py:
from django import forms
class newAdForm(forms.Form):
title = forms.CharField(max_length=50)
descr = forms.CharField(widget=forms.Textarea)
city = forms.CharField(max_length=30)
price = forms.FloatField(required=False)
img = forms.ImageField(required=False)
dateIn = forms.DateField(auto_now_add=True)
dateExp = forms.DateField(auto_now_add=True)
codC = forms.ModelChoiceField(Cat)
codU = forms.ModelChoiceField(UserProfile)
my views.py:
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.http import HttpResponse
from django import forms
from models import *
from django.forms import *
from django.forms.models import modelformset_factory
[...]
def newAd(request):
newAdFormSet = modelformset_factory(Ad)
if request.method == 'POST':
formset = newAdFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
return render_to_response('conf.html', {'state':'Your ad has been successfull created.'}, context_instance = RequestContext(request),)
else:
formset = newAdFormSet()
return render_to_response('ad_form.html', context_instance = RequestContext(request),)
我的ad_form_auto.html模板:
{% extends "base.html" %}
{% block title %}Ads insertion form{% endblock %}
{% block content %}
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
<form method="post" action="">
{{ formset }}
</form>
{% endblock %}
{%extends“base.html”%}
{%block title%}Ads插入表单{%endblock%}
{%block content%}
{%if错误消息%}
{{error\u message}}
{%endif%}
{{formset}}
{%endblock%}
非常感谢!这个社区看起来太棒了!:) 您没有将表单传递给模板-目前,包含表单的“formset”变量未包含在传递给视图的datadict中
return render_to_response('ad_form.html', context_instance = RequestContext(request),)
此处应包含数据(请参阅),我已在您的数据中将表单重命名为“表单”,并将模板重命名为“表单”,以便于命名:
return render_to_response('ad_form.html',
{'form':formset},
context_instance=RequestContext(request))
然后,在模板中(请参见)将{{formset}}
替换为{form.as{p}}
。还可以在表单中添加提交按钮
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{%csrf_令牌%}
{{form.as_p}}
我在登录功能上遇到了csrf问题,因此我暂时禁用了它。与形式,它的作品伟大,而不是!所以,我现在有了这个表单,但是我收到了两种形式,一个是旧元组,一个是白色的,而不是一个独特的白色表单。我应该只接受空白的对吗?还有其他错误吗?