Django:在同一个u上生成模型并显示数据

2024-09-30 01:21:39 发布

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

我是django的新手,正在尝试创建我的第一个应用程序,我想我可能需要一些帮助:)

我有一个网站上的模型表单提交,并希望显示在同一页上的数据。我很难在同一页上设置两个函数,我想我可能需要使用一个类来设置它网址.py但我没法让它工作:(代码看起来是这样的:

你知道吗表单.py地址:

from django import forms
from .models import Eintrag

class NameForm(forms.ModelForm):

    class Meta:
            model = Eintrag
            fields = ['Anmeldung', 'Essen']

你知道吗网址.py你知道吗

from django.urls import path

from . import views

app_name = 'form'
urlpatterns = [
    path('', views.get_name, name='form'),
]

你知道吗视图.py你知道吗

from django.shortcuts import render
from django.utils import timezone
from django.contrib.auth.decorators import login_required

from .forms import NameForm
from .models import Eintrag

@login_required()
def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            eintrag = form.save(commit=False)
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            eintrag.Name = request.user  # Set the user object here
            eintrag.pub_date = timezone.now()  # Set the user object here
            eintrag.save()

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

    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()

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

def post_list(request):
    posts = Eintrag.objects.all()
    return render('form/post_list.html', {'posts': posts})

你知道吗名称.html你知道吗

...
{% include "form/post_list.html" %}

<form action="/form/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
...

岗位_列表.html你知道吗

{% for post in posts %}
    {{ post }}
{% endfor %}

所以问题出在网址.py只处理get\u name,我不知道应该如何包括post\u列表。我不想使用不同的网址,我必须吗?你知道吗

谢谢你的帮助和建议!你知道吗


Tags: thedjangonamefrompyimportformif
2条回答

列表不需要单独的URL或视图。只需将queryset包含在get_name视图的上下文中。你知道吗

posts = Eintrag.objects.all()
return render(request, 'form/name.html', {'form': form, 'posts': posts})

使用[基于类的视图]会更好。
但是使用view,您可以通过context发送多个数据。你知道吗

@login_required()
def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        ''' codes '''
        eintrag.save()

        return HttpResponseRedirect(request.path) # generate an empty form

    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()

    posts = Eintrag.objects.all() # the queryset is here, and sent via context
    return render(request, 'form/name.html', {'form': form,'posts':posts})

您的html保持不变,但保持表单action=''为空

{% include "form/post_list.html" %}

<form action="" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>

相关问题 更多 >

    热门问题