如何从数据库中获取与 ID 对象相关的信息
How to get related to ID objects from database
我正在创建一个我正在使用 Django 的网站 database.The 数据库将有一个称为类别的定义和一个称为 gifi.So 的 gif 将属于一个类别,当一个类别将被点击时会将用户发送到一个页面,该页面将显示属于该类别的所有 gif up.I 知道我应该做一些事情,比如请求 ID,但我不知道代码
这是型号:
from django.db import models
class categorite(models.Model):
name = models.CharField(max_length=100)
id = models.AutoField(primary_key=True)
class Gifi(models.Model):
foto = models.ImageField(upload_to='website/static/')
emri = models.CharField(max_length=100)
Source = models.CharField(max_length=100)
Kodet = models.CharField(max_length=12)
categoryId = models.ForeignKey(categorite, on_delete=models.CASCADE)
id = models.AutoField(primary_key=True)
这是浏览量:
from django.shortcuts import render,get_object_or_404
from .models import Gifi,categorite
# Create your views here.
def home(request):
return render(request, 'website/home.html')
def categories(request):
content = {
'view': categorite.objects.all()
}
return render(request, 'website/categories.html',content)
def PostaCode(request):
return render(request, 'website/PostaCode.html')
def Contact(request):
return render(request, 'website/Contact.html')
def category(request,id):
content = {
'view': categorite.objects.get(id=id)
}
return render(request, 'website/category.html',content)
这是网址:
from django.urls import path
from . import views
urlpatterns = [
path('Home/',views.home, name='home'),
path('Categories/', views.categories, name='categories'),
path('PostaCode/', views.PostaCode, name='PostaCode'),
path('Contact/', views.Contact, name='Contact'),
path('Category/<int:id>/', views.category, name='category'),
]
这是我用来在 categories.html 上显示类别的代码:
<div class="row p">
{%for categorite in view%}
<a class="c" href="{% url 'category' categorite.id %}">{{categorite.name}}</a>
{% endfor %}
</div>
此视频快速展示了网站现在的运作方式:
https://vimeo.com/user122082575/review/451987151/da98e3f75c
您可以像这样使用 filter
获取数据:
# view
def category(request,id):
content = {
'view': Gifi.objects.filter(categoryId_id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{% for gifi in view %}
{{ gifi.emri }}
{% endfor %}
</div>
或者,您可以使用相关对象获取数据(在Gifi
到Category
之间使用reverse relation):
# view
def category(request,id):
content = {
'view': Category.objects.get(id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{{ view.name }} // category name
{% for gifi in view.gifi_set.all %}
{{ gifi.emri }} // gifi information
{% endfor %}
</div>
根据您的观点,当您请求 Gifi
时,您应该使用您从 url 提供的 <int:id>
。所以在你的观点中它会是这样的:Gifi.objects.filter(categoryId_id=id)
然后你可以在你的上下文中传递它。
需要修正的备注:
categorite
是小写它应该 Categorite
也总是用英文命名。
Source, Kodet
应该是小写字母,遵循 python 约定。
id
已过时,因为您始终有 pk
并且 django 知道在过滤结果时何时将 id
转换为 pk
。
categoryId
应该只是 category
- 视图函数应该总是蛇形的。例如
PostaCode
-> posta_code
- 修复函数之间的间距,类
- urls 应该小写。
与您的代码保持一致是强制性的,始终遵循每种语言的约定。对于 python 那将是 pep8 or black 请确保你知道这两个。
我正在创建一个我正在使用 Django 的网站 database.The 数据库将有一个称为类别的定义和一个称为 gifi.So 的 gif 将属于一个类别,当一个类别将被点击时会将用户发送到一个页面,该页面将显示属于该类别的所有 gif up.I 知道我应该做一些事情,比如请求 ID,但我不知道代码
这是型号:
from django.db import models
class categorite(models.Model):
name = models.CharField(max_length=100)
id = models.AutoField(primary_key=True)
class Gifi(models.Model):
foto = models.ImageField(upload_to='website/static/')
emri = models.CharField(max_length=100)
Source = models.CharField(max_length=100)
Kodet = models.CharField(max_length=12)
categoryId = models.ForeignKey(categorite, on_delete=models.CASCADE)
id = models.AutoField(primary_key=True)
这是浏览量:
from django.shortcuts import render,get_object_or_404
from .models import Gifi,categorite
# Create your views here.
def home(request):
return render(request, 'website/home.html')
def categories(request):
content = {
'view': categorite.objects.all()
}
return render(request, 'website/categories.html',content)
def PostaCode(request):
return render(request, 'website/PostaCode.html')
def Contact(request):
return render(request, 'website/Contact.html')
def category(request,id):
content = {
'view': categorite.objects.get(id=id)
}
return render(request, 'website/category.html',content)
这是网址:
from django.urls import path
from . import views
urlpatterns = [
path('Home/',views.home, name='home'),
path('Categories/', views.categories, name='categories'),
path('PostaCode/', views.PostaCode, name='PostaCode'),
path('Contact/', views.Contact, name='Contact'),
path('Category/<int:id>/', views.category, name='category'),
]
这是我用来在 categories.html 上显示类别的代码:
<div class="row p">
{%for categorite in view%}
<a class="c" href="{% url 'category' categorite.id %}">{{categorite.name}}</a>
{% endfor %}
</div>
此视频快速展示了网站现在的运作方式: https://vimeo.com/user122082575/review/451987151/da98e3f75c
您可以像这样使用 filter
获取数据:
# view
def category(request,id):
content = {
'view': Gifi.objects.filter(categoryId_id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{% for gifi in view %}
{{ gifi.emri }}
{% endfor %}
</div>
或者,您可以使用相关对象获取数据(在Gifi
到Category
之间使用reverse relation):
# view
def category(request,id):
content = {
'view': Category.objects.get(id=id)
}
return render(request, 'website/category.html',content)
# template
<div class="row p">
{{ view.name }} // category name
{% for gifi in view.gifi_set.all %}
{{ gifi.emri }} // gifi information
{% endfor %}
</div>
根据您的观点,当您请求 Gifi
时,您应该使用您从 url 提供的 <int:id>
。所以在你的观点中它会是这样的:Gifi.objects.filter(categoryId_id=id)
然后你可以在你的上下文中传递它。
需要修正的备注:
categorite
是小写它应该Categorite
也总是用英文命名。Source, Kodet
应该是小写字母,遵循 python 约定。id
已过时,因为您始终有pk
并且 django 知道在过滤结果时何时将id
转换为pk
。categoryId
应该只是category
- 视图函数应该总是蛇形的。例如
PostaCode
->posta_code
- 修复函数之间的间距,类
- urls 应该小写。
与您的代码保持一致是强制性的,始终遵循每种语言的约定。对于 python 那将是 pep8 or black 请确保你知道这两个。