如何在网址中使用字段值而不是pk?

时间:2019-07-02 09:44:20

标签: python django django-urls

我想在更新视图的URL中显示要为其更新详细信息的人员的用户名或姓名。我知道的唯一方法是在网址中显示pk。有没有一种方法可以用字段值替换pk?预先感谢。

2 个答案:

答案 0 :(得分:2)

是的,您只需在URL中定义slugstr部分。例如:

# app/urls.py

from django.urls import path

from app import views

urlpatterns = [
    path('user/<str:username>/', 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, username):
    user = get_object_or_404(User, username=username)
    # ...

答案 1 :(得分:2)

您可以使用slug。您可以使用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中使用子弹,如下所示:

path('<slug>/..../', views...., name='....'),