Form.is_valid()總是返回false。這是我的代碼。form.is_valid():總是返回false
#urls.py
url(r'^create/', "app.views.createpost", name="createpost"),
我的models.py
class Post(models.Model):
"""docstring for Post"""
post_image = AjaxImageField(upload_to='posts', max_width=200, max_height=200, crop=True, null= False, default='site_media/media/BobMarley/bob1.jpg')
poster = models.ForeignKey(User, null= False, default=User.objects.get(username="admin")
這裏是我的forms.py
#forms.py
class AjaxImageUploadForm(forms.Form):
image = forms.URLField(widget=AjaxImageWidget(upload_to='posts'))
view.py
#views.py
def createpost(request):
if request.method == 'POST':
form = AjaxImageUploadForm(request.POST, request.FILES)
if form.is_valid():
newpost = Post(post_image = request.FILES['image'])
newpost.poster = request.user
newpost.save()
return HttpResponseRedirect('/create/')
else:
form = AjaxImageUploadForm() # An empty, unbound form
posts = Post.objects.all()
return render_to_response('create.html',{'posts': posts, 'form': form},context_instance=RequestContext(request))
模板
#create.html
{% block extra_head %}
{{ form.media }}
{% endblock %}
{% block body %}
<form method="POST" enctype="multipart/form-data" action="{% url "createpost" %}">
{% csrf_token %}
{{ form.errors}}
{{ form.as_p }}
<button type="submit" name='image'>Upload</button>
</form>
{% endblock %}
該窗體從未有效,並且顯示的錯誤是「此字段是必需的」。 這是表單控件我使用Django的包叫做Django的ajaximage和他們的自定義部件(AjaxImageWidget)可能是一個自定義的文本組件
class AjaxImageWidget(widgets.TextInput):
謝謝您開始創建
<tr><th><label for="id_image">Image:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul>
<div class="ajaximage"><a class="file-link" target="_blank" href=""> <img class="file-img" src=""></a> <a class="file-remove" href="#remove">Remove</a>
<input class="file-path" type="hidden" value="" id="id_image" name="image" /> <input type="file" class="file-input" name="image"/> <input class="file-dest" type="hidden" name="image" value="/ajaximage/upload/posts/0/0/0"> <div class="progress progress-striped active"> <div class="bar"></div></div>
</div>
</td></tr>
幫助
表單對象在哪裏創建?它的課程在哪裏?另外,請正確縮進您的代碼。 – Marcin 2014-10-31 10:19:50
你的'超級'上Post init對我來說看起來很陌生 – Anzel 2014-10-31 10:28:12
你的模型班被徹底打破了。 '__init__'方法主動阻止你創建一個填充的實例,或者從db中加載一個實例。你應該完全刪除它。 – 2014-10-31 10:30:26