0

视图.py

@login_required(login_url="/accounts/login/")
def add_project(request):
    if request.method == 'POST':
        form = forms.CreateProject(request.POST, request.FILES)
        if form.is_valid():
            # save in db 
            instance = form.save(commit=False)
            instance.candidate = request.user 
            instance.save()
            return redirect ('view_project')
    else :
        form = forms.CreateProject()
    return render(request, 'home/add_project.html', {'form': form})

@login_required(login_url="/accounts/login/")
def view_project(request):
    return render(request, 'home/view_project.html')

模型.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class project(models.Model):
    Name_of_the_organisation_or_Individual_applying = models.CharField(max_length=200)
    Name_of_the_Project = models.CharField(max_length=200)
    Name_of_the_Principal_Investigator = models.CharField(max_length=200)
    date = models.DateTimeField(auto_now_add = True)
    Cover_Letter = models.FileField(upload_to=None, max_length=254)
    Summary_of_Project = models.CharField(max_length=500)
    Study_Proposal = models.CharField(max_length=1000)
    Any_other_documents_required = models.FileField(upload_to=None, max_length=254)
    candidate = models.ForeignKey(User, default=None, on_delete=models.CASCADE)

这是为特定用户将项目添加到数据库中的 views.py 文件,用于此的 HTML 文件是 add_project.html

4

2 回答 2

0

我知道在add_project视图中用户填写表格并且提交后被重定向到view_project视图,并且view_project您想要显示所有项目的列表。为此,您需要通过第三个参数将它们在上下文中传递给模板,然后在模板中迭代它们以呈现列表或表格。

@login_required(login_url="/accounts/login/")
def view_project(request):
    projects = project.objects.all()
    return render(request, 'home/view_project.html', {'projects': projects})
于 2020-10-22T20:26:20.420 回答
0

要显示所有项目,您必须使用 Django 的上下文在视图中传递它们。此外,您需要在要检索所有数据的模型上使用查询方法。查看下面的代码以获得更好的想法。

@login_required(login_url="/accounts/login/")
def view_project(request):
    projects = project.objects.all()
    context = {"projects":projects}
    return render(request, 'home/view_project.html', context)

然后在您的 html 文件中,您可以像这样遍历所有“项目”上下文:

{% for project in projects %}
<h1>{{project.Name_of_the_organisation_or_Individual_applying}} </h1>
<h1>{{project.Name_of_the_Project}} </h1>
# and so on for all other fields
{% endfor %}
于 2020-10-22T20:41:24.867 回答