接收用户的输入并在同一页上显示相同的输入

2024-04-18 23:39:18 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我试图在django中创建一个post表单,其中用户创建了一个post,并且该post在同一页面上显示给他们,但到目前为止我没有成功。我的文章会显示在页面上,但是发布文章的表单并不是只有提交按钮会显示。你知道吗

在视图.py你知道吗

def articles(request):
    args = {}
    args.update(csrf(request))
    args ['posts'] = post.objects.filter(user = request.user)
    args ['full_name'] = User.objects.get(username = request.user.username)

    return render_to_response('articles.html', args)



def article(request, post_id=1):

    return render(request, 'article.html', 
                  {'post': post.objects.get(id=post_id) })

def create(request):
    if request.POST:
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            a = form.save(commit=False)
            a.user = User.objects.get(username = request.user.username)
            a.save()

            messages.add_message(request, messages.SUCCESS, "You Article was added")

            return HttpResponseRedirect('/posts/all')
    else:
        form = PostForm()

    args = {}
    args.update(csrf(request))

    args['form'] = form

    return render_to_response('articles.html', args)

在文章.html你知道吗

<form action="/posts/create/" method="post" enctype="multipart/form-data">{% csrf_token %}
<ul>
{{form.as_ul}}
</ul>

<input type="submit" name="submit" value="Create Article">

</form>

{% if posts.count > 0 %}

{% for post in posts %}

    <div>
    <h2><a href="/posts/get/{{ post.id }}/">{{full_name}}</a></h2>
    <p>{{ post.body|lower|truncatewords:50 }}</p>
    <p>{{post.likes}} people liked this article</a></p>
    </div>

{% endfor %}

{% else %}

<p>None to show!</p>

{% endif %}

{% endblock %}

在网址.py你知道吗

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',

        url(r'^create/$', 'posts.views.articles'),
        url(r'^get/(?P<post_id>\d+)/$', 'posts.views.article'),
        url(r'^create/$', 'posts.views.create'),
        url(r'^like/(?P<post_id>\d+)/$', 'posts.views.like_article'),
        url(r'^article/(?P<post_id>\d+)/$', 'posts.views.add_comment'),
    )

Tags: formidurlgetobjectsrequestcreatearticle
1条回答
网友
1楼 · 发布于 2024-04-18 23:39:18

首先,您没有在articles()中将表单传递给模板。你需要具备以下几点:

args['form'] = YourForm()

在第一次查看函数时。此外,在“创建”视图中,还可以执行以下操作:

a.user = User.objects.get(username = request.user.username)

它会再次对用户执行不必要的数据库查找,您可以这样做以更清晰、更快:

a.user = request.user

相关问题 更多 >