【问题标题】:form field not showing (django 1.7)表单字段未显示(django 1.7)
【发布时间】:2015-10-15 14:19:57
【问题描述】:

表单域(文本区域)未显示在我的 django 模板中。我可以找出问题所在。

Views.py

class Profile(View):
    """User Profile page reachable from /user/<username> URL"""
    def get(self, request, username):
        params = dict()
        user = User.objects.get(username=username)
        tweets = Tweet.objects.filter(user=user)
        params["tweets"] = tweets
        params["user"] = user
        return render(request, 'profile.html', params)


class PostTweet(View):
"""Tweet Post form available on page /user/<username> URL"""
def post(self, request, username):
    if request.method == 'GET':
        form = TweettForm()
    else:
        form = TweetForm(self.request.POST)
        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()
            words = form.cleaned_data['text'].split(" ")
            for word in words:
                if word[0] == "#":
                    hashtag, created = HashTag.objects.get_or_create(name=word[1:])
                    hashtag.tweet.add(tweet)
        return HttpResponseRedirect('/user/'+username)

    return render(request, 'profile.html', {'form': form})

forms.py

from django import forms


class TweetForm(forms.Form):
    text = forms.CharField(widget=forms.Textarea(attrs={'rows': 1,     'cols':85}), max_length=160)
    country = forms.CharField(widget=forms.HiddenInput())

profile.html

{% extends "base.html" %}

{% block content %}
<div class="row clearfix">
<div class="col-md-12 column">
    <form method="post" action="post/">{% csrf_token %}
        <div class="col-md-8 col-md-offset-2 fieldWrapper">
            {{ form.text.errors }}
            {{ form.text }}
        </div>
            {{ form.country.as_hidden }}
        <div>
            <input type="submit" value="post">
        </div>
    </form>
</div>

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from tweets.views import Index, Profile, PostTweet

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())
)

在浏览器中呈现时,只有提交(发布)按钮才会显示在 on 上。文本不存在

【问题讨论】:

  • 请包含您用来访问它的网址,您只包含了 post 方法,这不是问题(应该)所在
  • 我已经添加了。它在那里
  • 你的PostTweet有get方法吗?您似乎没有在任何地方提供 form 上下文数据
  • @Sayse 仍未解决
  • 你还没有回答我的cmets。

标签: html django forms


【解决方案1】:

由于您没有将表单传递给模板,因此您什么也得不到。在PostTweet 视图中写入get 函数,并在其中包含form = TweetForm() 作为传递给模板的参数。

【讨论】:

  • 我这样做了,但这似乎并没有解决问题
猜你喜欢
  • 2017-07-29
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2021-01-22
  • 2021-01-01
  • 2021-11-10
相关资源
最近更新 更多