如何最小化 Django 中 url 定义的数量?
How to mimize number of url definitions in Django?
在 Django 中,您为网站中的 link/end 点创建了一个 URL。我的问题是,如果您正在创建带有很多链接的东西,例如博客应用程序,您的 urls.py 中实际上可以有成百上千个 url 定义。假设链接没有参数,即 url 不捕获输入,那么这样的 Django 应用程序将需要设计一种方法来利用数据库来最小化 url 定义。有人能想出更有效的解决方案吗?
Django 中的 URLs 可以有参数,这些参数可以被替换以生成一大堆 URLs.
假设您的 Blog
模型类似于
class Blog(models.Model):
title=models.CharField(max_length=200)
content=models.TextField()
然后,您可以通过将 URL 定义为
来为每个博客创建一个 URL
url("^blog/([0-9]+)/$, views.blog_details)
([0-9]+
部分告诉 Django 寻找一个数字作为参数,例如 /blogs/1234/
之类的 URL
相应的视图函数会将博客 ID 作为参数
def blog_details(blog_id):
blog=get_object_or_404(Blog, pk=blog_id)
# generate view of this blog from template
您可以使用 URL 参数做很多事情,更多信息请访问 https://docs.djangoproject.com/en/1.10/topics/http/urls/
在 Django 中,您为网站中的 link/end 点创建了一个 URL。我的问题是,如果您正在创建带有很多链接的东西,例如博客应用程序,您的 urls.py 中实际上可以有成百上千个 url 定义。假设链接没有参数,即 url 不捕获输入,那么这样的 Django 应用程序将需要设计一种方法来利用数据库来最小化 url 定义。有人能想出更有效的解决方案吗?
URLs 可以有参数,这些参数可以被替换以生成一大堆 URLs.
假设您的 Blog
模型类似于
class Blog(models.Model):
title=models.CharField(max_length=200)
content=models.TextField()
然后,您可以通过将 URL 定义为
来为每个博客创建一个 URLurl("^blog/([0-9]+)/$, views.blog_details)
([0-9]+
部分告诉 Django 寻找一个数字作为参数,例如 /blogs/1234/
之类的 URL
相应的视图函数会将博客 ID 作为参数
def blog_details(blog_id):
blog=get_object_or_404(Blog, pk=blog_id)
# generate view of this blog from template
您可以使用 URL 参数做很多事情,更多信息请访问 https://docs.djangoproject.com/en/1.10/topics/http/urls/