You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中使用Slug实现类似mysite.com/user的URL路径

实现用户个人页面URL配置方案

先修正视图函数的问题

你的myfun函数有几处需要调整:

  1. 无需实例化TwitterUser再调用objects,直接用TwitterUser.objects.get()即可
  2. 建议用get_object_or_404替代get,避免用户不存在时抛出未处理的异常
  3. 加上@login_required装饰器,确保只有登录用户能访问该页面

修改后的代码:

from django.shortcuts import get_object_or_404
from django.contrib.auth.decorators import login_required

@login_required
def myfun(request, user_slug):
    twitter_user = get_object_or_404(TwitterUser, user=user_slug)
    return render(request, 'authorization/home.html', {'user': twitter_user})

配置app/urls.py的URL规则

要捕获URL中的slug参数,使用Django的slug路径转换器,并且把这条新路由放在urlpatterns的最后(避免和其他固定路径冲突):

修改后的urlpatterns:

urlpatterns = [
    path('', views.index, name='index'),
    path('twitter_login/', views.twitter_login, name='twitter_login'),
    path('twitter_callback/', views.twitter_callback, name='twitter_callback'),
    path('twitter_logout/', views.twitter_logout, name='twitter_logout'),
    # 新增用户个人页面路由
    path('<slug:user_slug>/', views.myfun, name='user_profile'),
]

额外注意事项

  • 确保TwitterUser模型的user字段在创建用户时被正确赋值(比如用关联的auth.User的username作为slug值)
  • 路由放在最后是为了防止twitter_login这类固定路径被误识别为slug参数
  • 路由中的参数名user_slug要和视图函数的参数名保持一致

内容的提问来源于stack exchange,提问作者Vicky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:05:30