我正在尝试构建一个完整的堆栈Web应用程序。在我的数据库中,我有一个包含大量数据的表,如下所示:
SHOWS
ID show_name show_number
1 First Show 2
2 Second Show 1
3 Third Show 1
4 fourth Show 2
5 Fifth Show 3
6 Sixth Show 1
如果你可以看到,我在旁边显示了一个列号。此节目编号可以是1-32中的任意数字。我想要做的是通过设置url模式来获得一个URL,将这些show_number作为一种参数。
在我的urls.py中
urlpatterns = [
url(r'^show/(?P<show_number>\d+)$', views.slideshow),
]
当我去... / show / 1 /时, show_number 1的所有行都将在该页面上。如果我去... ../ show / 2 / show_number 2的所有行都会去那里等等。
在我的models.py中:
def show_screen(self):
with connection.cursor() as cursor:
cursor.execute("SELECT show_number, show_name FROM shows ORDER BY show_number ASC;")
data = cursor.fetchall()
return data
在我看来:
def slideshow(request):
context = {
"shows": Show.objects.all()
}
return render(request, 'index.html', context)
在这个项目结束时,我的目标是让我的网址每隔一秒动态更改一次。有没有办法直接从数据库传递url模式?
让我们说每30秒,我的页面应该转到
www./....../show/1/
www./....../show/2/
www./....../show/3/
www./....../show/7/
www./....../show/19/
到达最后一个URL参数后,它会返回到第一个URL。
非常感谢您的阅读!
答案 0 :(得分:1)
您的观点需要接受您在show_number
中定义的urls.py
变量:
def slideshow(request, show_number):
然后,您需要根据show_number
:
Show.objects.filter(show_number=show_number)
完整视图代码:
def slideshow(request, show_number):
context = {
"shows": Show.objects.filter(show_number=show_number)
}
return render(request, 'index.html', context)
对于问题的第二部分,我会执行以下操作:
slideshow
视图window.location.href = '://your_url';