簡體   English   中英

表單未顯示在 html、django 上

[英]form not display on html, django

我試圖制作一個允許用戶發帖的博客,將帖子連同發帖日期時間和發帖人一起存儲在數據庫中。

我的問題是我以某種方式無法將 {{form}} 加載到我的 UI,這使我的表單無效,我只是不知道為什么它不顯示輸入文本框。 用戶界面

我不確定是否需要 get_post 函數,但我會將它放在 views.py 中。 (我還沒有寫那部分的 html。只需要先看看表格。)我對 Django 很陌生,有人可以幫我解決這個問題嗎!!! 謝謝!

下面是我的文件。

blog.html 文件:

{% block posts %}
<div>
<span>New Post: </span>
<form method="post" action="{% url 'posts' %}" enctype="multipart/form-data">
            {% csrf_token %}
            <table>
                {{form}}
                <!--not showing in UI-->
            </table>
            <input id="id_post_button" type="submit" value="Submit" /><br>
</form>
<div>
{% endblock %}

網址.py

urlpatterns = [
    path('posts', views.post_action, name='posts'),
    path('post/<int:id>', views.get_post, name='post'),
]

模型.py

class PostModel(models.Model):
    user_id = models.IntegerField()
    post_input_text = models.CharField(max_length=100)
    post_profile = models.CharField(max_length=30)
    post_date_time = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return 'id=' + str(self.user_id) + ", post_date_time=" + self.post_date_time + ", post_input_text=" + self.post_input_text + ", post_profile=" + self.post_profile

視圖.py:

@login_required
def post_action(request):
    print("----post action---")
    context = {}
    if request.method == "GET":
        context['form'] = CreatePost()
        context['posts']= PostModel.objects.get(user_id = request.user.id)
        return render(request, "socialnetwork/blog.html", context)

    form = CreatePost(request.POST, request.FILES)
    if not form.is_valid():
        print("not valid ~~~~~~~~")
        context['form'] = form
        context['posts'] = PostModel.objects.get(user_id = request.user.id)
        return render(request, "socialnetwork/blog.html", context)

    post_input_text = form.cleaned_data.get("post_input_text")
    post_date_time = form.cleaned_data.get("post_date_time")
    post_profile = form.cleaned_data.get("post_profile")
    obj = PostModel.objects.get(
        user_id = request.user.id,
    )
    obj.post_input_text = form.cleaned_data.get("post_input_text")
    obj.post_date_time = form.cleaned_data.get("post_date_time")
    obj.post_profile = form.cleaned_data.get("post_profile")
    obj.save()
    form = CreatePost() #refresh the form to original state

    context['form'] = form
    context['posts'] = obj
    return render(request, "socialnetwork/blog.html", context)


def get_post(request, id):
    item = get_object_or_404(PostModel, id=id)
    print('Picture #{} fetched from db: {} (type={})'.format(id, item.post_input_text, item.post_profile, item.post_date_time))
    if not item.post_input_text:
        raise Http404
    return HttpResponse(item.post_input_text)


表格.py

class CreatePost(forms.Form):
    post_input_text = forms.CharField(max_length=100)
    post_profile = forms.CharField(max_length=30)
    post_date_time = forms.DateTimeField()

使用{{ form.as_table }}更新模板,而不是{{form}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM