定义用于在 django 中显示 postgres 数据的视图函数
Defining view function for displaying postgres data in django
我在 postgresql 中创建了葡萄酒数据库(包含 ID、名称等),并插入了大约 300 个观察值。
我想在 django 的下拉菜单中显示每种葡萄酒的名称。 urls.py 已正确设置。
到目前为止我做了什么:
models.py
from django.db import connection
from django.db import models
class ListWines(models.Model):
name = models.CharField(max_length=200)
views.py
from django.shortcuts import render
from wineapp.models import ListWines
def showallwines(request):
wines = ListWines.objects
return render(request, 'main.html', { 'name':wines } )
main.html
<!DOCTYPE html>
<head>
<body>
<select>
<option disabled = "True" selected>Select your favourite wine!</option>
{% for wines in showallwines %}
<option>{{wines.name}}</option>
{% endfor %}
</select>
</body>
</head>
postgres 数据库(包含我要显示的数据的列是 name)通过 setings.py 与应用程序连接,但它不显示名称。
我应该如何重新定义我的函数才能在 main.html 下拉菜单中看到显示?
要获取所有对象的列表,必须使用Model.objects.all()
因此请在您的视图中进行这些更改
def showallwines(request):
wines = ListWines.objects.all() # changed
# changed context name to wines since it is list of wines not names.
return render(request, 'main.html', { 'wines': wines } )
main.html
您必须使用上下文名称 wines
,因为我们从视图
传递上下文 wines
{% for wine in wines %}
<option>{{ wine.name }}</option>
{% endfor %}
views.py
而不是 ListWines.objects 使用 ListWines.objects.all()
并使用“showallwines”更新上下文名称。
def showallwines(request):
wines = ListWines.objects.all()
return render(request, 'main.html', { 'showallwines':wines } )
我在 postgresql 中创建了葡萄酒数据库(包含 ID、名称等),并插入了大约 300 个观察值。 我想在 django 的下拉菜单中显示每种葡萄酒的名称。 urls.py 已正确设置。 到目前为止我做了什么:
models.py
from django.db import connection
from django.db import models
class ListWines(models.Model):
name = models.CharField(max_length=200)
views.py
from django.shortcuts import render
from wineapp.models import ListWines
def showallwines(request):
wines = ListWines.objects
return render(request, 'main.html', { 'name':wines } )
main.html
<!DOCTYPE html>
<head>
<body>
<select>
<option disabled = "True" selected>Select your favourite wine!</option>
{% for wines in showallwines %}
<option>{{wines.name}}</option>
{% endfor %}
</select>
</body>
</head>
postgres 数据库(包含我要显示的数据的列是 name)通过 setings.py 与应用程序连接,但它不显示名称。
我应该如何重新定义我的函数才能在 main.html 下拉菜单中看到显示?
要获取所有对象的列表,必须使用Model.objects.all()
因此请在您的视图中进行这些更改
def showallwines(request):
wines = ListWines.objects.all() # changed
# changed context name to wines since it is list of wines not names.
return render(request, 'main.html', { 'wines': wines } )
main.html
您必须使用上下文名称 wines
,因为我们从视图
wines
{% for wine in wines %}
<option>{{ wine.name }}</option>
{% endfor %}
views.py
而不是 ListWines.objects 使用 ListWines.objects.all() 并使用“showallwines”更新上下文名称。
def showallwines(request):
wines = ListWines.objects.all()
return render(request, 'main.html', { 'showallwines':wines } )