如何在url中使用字段值而不是pk?
How to use a field value instead of pk in the url?
我想在更新视图的 url 中显示我要为其更新详细信息的人的用户名或姓名。我知道的唯一方法是在 url 中显示 pk。有没有一种方法可以用字段值替换 pk ?提前致谢。
是的,您可以简单地在url中定义一个slug
或str
部分。例如:
# app/urls.py
from django.urls import path
from app import views
urlpatterns = [
path('user/<b><str:username>/</b>', views.user_details),
]
并且在您看来,您可以使用 username
字段查询 username
URL 参数:
# app/views.py
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404
def user_details(request<b>, username</b>):
user = get_object_or_404(User<b>, username=username</b>)
# ...
您可以使用 slug
因为 this.You 可以使用 pip install django-autoslug
安装 slug 例如:
from autoslug import AutoSlugField
class A(models.Model):
field = models.CharField(max_length=250)
slug = AutoSlugField(unique_with='id', populate_from='field')
在 urls.py
中使用这样的 slug:
path('<slug>/..../', views...., name='....'),
我想在更新视图的 url 中显示我要为其更新详细信息的人的用户名或姓名。我知道的唯一方法是在 url 中显示 pk。有没有一种方法可以用字段值替换 pk ?提前致谢。
是的,您可以简单地在url中定义一个slug
或str
部分。例如:
# app/urls.py
from django.urls import path
from app import views
urlpatterns = [
path('user/<b><str:username>/</b>', views.user_details),
]
并且在您看来,您可以使用 username
字段查询 username
URL 参数:
# app/views.py
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404
def user_details(request<b>, username</b>):
user = get_object_or_404(User<b>, username=username</b>)
# ...
您可以使用 slug
因为 this.You 可以使用 pip install django-autoslug
安装 slug 例如:
from autoslug import AutoSlugField
class A(models.Model):
field = models.CharField(max_length=250)
slug = AutoSlugField(unique_with='id', populate_from='field')
在 urls.py
中使用这样的 slug:
path('<slug>/..../', views...., name='....'),