【问题标题】:Display Django Templates after sucessfuly posting data成功发布数据后显示 Django 模板
【发布时间】:2021-02-27 00:45:34
【问题描述】:

我的 Django 模板有问题:

forms.py:

class SupportForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField()

models.py:

class Message(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    message = models.CharField(max_length=100)

    def __str__(self):
        return self.user.username

views.py:

class my_view(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
        try:
            messages = Message.objects.filter(user=request.user)
            context = {
                'object': messages,
            }
            return render(self.request, 'my.html', context)
        except:
            return render(request, "my.html",{})

    def post(self, request, *args, **kwargs):
        form = SupportForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            message = form.cleaned_data['message']
            message_model = Message(
                user=request.user,
                name = name,
                message = message,
                )
            message_model.save()
        return redirect('/my/')

我的.html:

object:{{ objects }}<br>
name:{{objects.name.1}}<br>
message:{{objects.message.1}}<br>

{% for item in objects_list %}

{{ item.name }}

{% endfor %}

我想在 html 中发布名称和消息,然后在输入下显示。 POST 工作正常。然后我想显示我的名字和信息。 问题在于在 html 中查看我的对象:我什么都看不到。我做错了什么?

【问题讨论】:

    标签: python html django templates model


    【解决方案1】:

    在上下文变化中

                context = {
                    'objects': messages,
                }
    

    在 HTML 中

    {% for object in objects %}
    
    name:{{object.name}}<br>
    message:{{object.message}}<br>
    
    {% endfor %}
    

    您将其称为object 而不是objects 试试看告诉我

    【讨论】:

    • 我之前注意到了,但遗憾的是它并没有解决这个问题。
    • 你可以试试没有 1 的 message:{{ object.message }}
    • 仍然没有任何反应
    • 将视图更改为 ListView 解决了问题。
    【解决方案2】:

    编辑:工作

    views.py:

    class my_view(ListView):
    
        model = Message
        template_name = "my.html"
    
        def post(self, request, *args, **kwargs):
            form = SupportForm(request.POST)
            if form.is_valid():
                name = form.cleaned_data['name']
                message = form.cleaned_data['message']
                    message_model = Message(
                    user=request.user,
                    name = name,
                    message = message,
                    )
                message_model.save()
                return redirect('/my/')
    

    我的.html:

    {% for item in object_list %}
    
    {{ item.name }}
    {{ item.message|safe }}
    <br>
    
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2013-02-17
      • 2022-11-10
      • 2012-03-18
      • 2015-03-12
      • 2021-10-02
      • 1970-01-01
      • 2016-10-15
      • 2014-11-12
      相关资源
      最近更新 更多