Python 根本看不到表单输入字段
我想收集用户输入的内容,然后使用POST方法更改数据库。但当我点击网站上的“发布”按钮时,我一片空白 这是视图.pyPython 根本看不到表单输入字段,python,django,Python,Django,我想收集用户输入的内容,然后使用POST方法更改数据库。但当我点击网站上的“发布”按钮时,我一片空白 这是视图.py class PostTweet(View): def post(self, request, username): form = TweetForm(request.POST) print form.is_valid() print request.POST print form.errors if form.is_valid():
class PostTweet(View):
def post(self, request, username):
form = TweetForm(request.POST)
print form.is_valid()
print request.POST
print form.errors
if form.is_valid():
user = User.objects.get(username=username)
tweet = Tweet(text=form.cleaned_data['text'],
user=user,
country=form.cleaned_data['country'])
tweet.save()
return HttpResponseRedirect('/user/'+username)
else:
form = TweetForm()
return render(request, 'profile.html', {'form':form})
class Profile(View):
"""
User Profile page reachable from /user/<username> URL
"""
def get(self, request, username):
params = {}
user = User.objects.get(username = username)
tweets = Tweet.objects.filter(user=user)
params["tweets"] = tweets
params["user"] = user
return render(request, 'profile.html', params)
profile.html
{% extends "base.html" %}
{% block content %}
<div class="row clearfix">
<div class="col-md-6 col-md-offset-3 column">
<form id="form" method="POST" action="post/">{% csrf_token %}
<div class="col-md-8 fieldWrapper">
{{ form }}
<span class="input-group-btn">
<button class="btn btn-default" type="submit">Post</button>
</span>
</div>
</form>
</div>
<h3> </h3>
<div class="col-md-12 column">
{% for tweet in tweets %}
<div class="well">
<span>{{ tweet.text}}</span>
</div>
{% endfor %}
</div>
</div>
{% endblock %}
任何人只要给我一个提示都将不胜感激:-)仅添加{{form}不应呈现该字段。表单是以字段作为属性的对象。在html中,尝试将
{{form}}
替换为{{form.text}
您还可以尝试按如下方式传递对象“form”:
return render(request, 'profile.html', form = form)
你的表格有效吗?现在我更仔细地看了一下,你似乎也没有在页面上包含你的表单。在
标记中应该有一个{{form}
或类似的东西。@ddsnowboard我已经更改了profile.html
来添加{form}
,就像你说的那样。但我根本看不到输入的文本文件。你能帮我弄清楚吗?@Alasdair嘿,兄弟,我改变了看法和主题。我希望您能看到:-)什么是post_view方法?添加一些print语句来调试代码,例如print form.is_valid()
。如果无效,您可以检查form.errors
@Alasdair bro,我在tweet.save()
下添加了print form.is\u valid()
,但是终端没有显示form.is\u valid()的布尔值。我做得不对吗?我仍然看不到输入字段。如果您在这里复制调试模式下可能看到的堆栈跟踪,或者使用inspect元素查看在预期字段出现的位置是否加载了任何内容,您可以帮助我们了解问题。我对Flask非常满意,它是Django的一个更简单的版本,在Flask中,一旦对象被传递到模板,您就可以访问我指出的字段了:/这真是一个很好的建议,兄弟。我会按照你告诉我的方式去做。非常感谢您的帮助:-)
from django.conf.urls import include, url, patterns
from django.contrib import admin
from tweets.views import Index, Profile, PostTweet, HashTagCloud
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', Index.as_view()),
url(r'^user/(\w+)/$', Profile.as_view()),
url(r'^admin/', include(admin.site.urls)),
url(r'^user/(\w+)/post/$', PostTweet.as_view()),
url(r'^hashTag/(\w+)/$', HashTagCloud.as_view()),
)
return render(request, 'profile.html', form = form)