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

Django跳转指定用户个人主页的用户名传参实现方法

Django 用户名参数传递实现方案

你需要依次修改模板、视图两处代码,现有路由配置已经符合要求无需调整:

1. 修改信息流模板的跳转链接

原有模板中{% url 'view_profile' %}没有传入路由要求的用户名参数,直接将帖子关联的发布者用户名作为参数传入url标签即可,修改对应a标签部分:

<section id="main_feed_section" class="feed_sections">
    {% for post in posts %}
        <div class="post_main_container">
            <section class="post_title">
                <!-- 这里修改href,传入用户名参数 -->
                <h1> <a href="{% url 'view_profile' username=post.user_id.username %}">{{ post.user_id.username }}</a>{{ post.title }}</h1>
            </section>

            <section class="post_main_body">
                <p>{{ post.caption }}</p>
            </section>

            <section class="post_footer">
                <p>{{ post.date_posted }}</p>
            </section>
        </div>
    {% endfor %}
</section>

用关键字参数username=post.user_id.username传参兼容性更好,不会因为路由参数顺序调整报错。

2. 修改视图函数接收参数、优化查询逻辑

原有视图没有定义形参接收url传递的用户名,还硬编码了固定账号,同时使用全表查询后在Python内存过滤的写法性能极差,修改为如下形式:

from django.shortcuts import render, get_object_or_404
# 替换成你实际的用户模型导入路径
from django.contrib.auth.models import User

def view_profile(request, username):   
    # 校验对应用户是否存在,不存在直接返回404,避免空数据报错
    account = get_object_or_404(User, username=username)
    # 用ORM直接在数据库层过滤,不要查全表再循环判断,性能差距极大
    posts = Posts.objects.filter(user_id__username=username)
    followers = Relationships.objects.filter(acc_followed_id__username=username)

    context = {
        "title":username,
        "account": account,
        "posts":posts,
        "followers":followers
    }
    return render(request, "myApp/view_profile.html", context)

路由配置说明

你现有的urls.py配置已经正确,不需要修改:

from django.urls import path
from . import views

urlpatterns = [
    path("home/", views.home, name="home"),
    path("create_post/", views.create_post, name="create_post"),
    path('view_profile/<str:username>', views.view_profile, name="view_profile"), 
]

修改完成后,点击帖子上的用户名就会跳转到/view_profile/对应用户名的路径,视图会自动拿到路径里的用户名,筛选出对应用户的数据渲染页面。

补充说明:如果你的帖子模型外键直接关联用户模型,还可以直接用外键对象查询,比如Posts.objects.filter(user_id=account),比跨表匹配用户名效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:15:39