форма не отображается на html, django - PullRequest
0 голосов
/ 19 февраля 2020

Я попытался создать блог, в котором можно публиковать записи пользователей, хранить записи в БД вместе с датой и временем публикации и человеком, который его опубликовал.

Моя проблема в том, что я почему-то не могу загрузить {{form}} в свой пользовательский интерфейс, что делает мою форму недействительной, и я просто не знаю, почему она не отображает текстовое поле ввода. UI

Я не уверен, нужна ли мне функция get_post, но я просто помещу ее в views.py. (Я еще не написал html этой части. Просто сначала нужно увидеть форму.) Я довольно новичок в Django, может кто-нибудь, пожалуйста, поможет мне с этим !!! Спасибо!

Ниже приведены мои файлы.

blog. html file:

{% 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 %}

urls.py

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

Models.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

Views.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)


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

1 Ответ

0 голосов
/ 19 февраля 2020

Обновите шаблон с {{ form.as_table }} вместо {{form}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...