如何使用动态 URL 访问数据库项
How to access database items with dynamic URLs
如何让我的网站在我访问 url 'mywebsite.com/1/' 时显示 ID 为“1”的数据库项目?我找到的所有教程都是关于在旧版本的 Django 中设置 'urls.py',而不是如何制作动态 urls.
这是我的模型:
from django.db import models
# Create your models here.
class video (models.Model):
VID_CHOICES = (
('News', 'News'),
('Stam', 'Stam'),
('Music', 'Music'),
('Ad', 'Ad'),
)
url = models.CharField(max_length=1000)
title = models.CharField(max_length=100)
description = models.CharField(max_length=1000, blank=True)
show_after_time = models.DateTimeField('show after')
category = models.CharField(max_length=20, choices=VID_CHOICES)
tag = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.title
您可以创建一个接受参数的路径,例如:
path('<b><int:pk></b>/', <i>some_view</i>, name='<i>some_view</i>'),
在 some_view
中,有一个额外的参数 pk
将采用输入的值在路径中 int
:
from django.shortcuts import get_object_or_404, render
def some_view(request, pk):
item = get_object_or_404(<i>MyModel</i>, <b>pk=pk</b>)
return render(request, 'app_name/some_template.html', {'item': item})
然后在模板中,您可以渲染 item
的(属性):
{{ <b>item</b> }}
如何让我的网站在我访问 url 'mywebsite.com/1/' 时显示 ID 为“1”的数据库项目?我找到的所有教程都是关于在旧版本的 Django 中设置 'urls.py',而不是如何制作动态 urls.
这是我的模型:
from django.db import models
# Create your models here.
class video (models.Model):
VID_CHOICES = (
('News', 'News'),
('Stam', 'Stam'),
('Music', 'Music'),
('Ad', 'Ad'),
)
url = models.CharField(max_length=1000)
title = models.CharField(max_length=100)
description = models.CharField(max_length=1000, blank=True)
show_after_time = models.DateTimeField('show after')
category = models.CharField(max_length=20, choices=VID_CHOICES)
tag = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.title
您可以创建一个接受参数的路径,例如:
path('<b><int:pk></b>/', <i>some_view</i>, name='<i>some_view</i>'),
在 some_view
中,有一个额外的参数 pk
将采用输入的值在路径中 int
:
from django.shortcuts import get_object_or_404, render
def some_view(request, pk):
item = get_object_or_404(<i>MyModel</i>, <b>pk=pk</b>)
return render(request, 'app_name/some_template.html', {'item': item})
然后在模板中,您可以渲染 item
的(属性):
{{ <b>item</b> }}