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

How to use a field value instead of pk in the url?

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

是的,您可以简单地在url中定义一个slugstr部分。例如:

# 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='....'),