首页 > 解决方案 > 每个用户具有唯一 url 和用户内容的页面

问题描述

我正在尝试构建一个应用程序,其中每个用户都有自己的数据库内容,但在一个页面/url 上列出了一些(选择的)数据库内容并公开可见。我做了很多研究,但无法想出这是如何工作的逻辑。我在 URL 中有一个用户名,但是当我将其更改为其他用户名时,内容并没有改变......我在这里错过了什么步骤?

视图.py

def public_view(request, username):
    if request.user.is_authenticated():
        info = Profile.objects.filter(user=request.user)
        instance = Parent.objects.filter(user=request.user)
        childs = Child.objects.filter(user=request.user)
        u = MyUser.objects.get(username=username)

        context = {
            'info': info,
            'instance': instance,
            'childs': childs,
            'u': u,
        }
        return render(request, 'public/public_home.html', context)
    else:
        raise Http404

网址.py

from django.conf.urls import url
from django.contrib import admin

from . import views


urlpatterns = [
    url(r'^user/(?P<username>\w+)/$', views.public_view, name='public_view'),
]

标签: djangodjango-templatesdjango-views

解决方案


在您看来,您可以在查询集中获取当前用户request.user的数据。您应该更改查询集的参数 tu对象:

def public_view(request, username):
    if request.user.is_authenticated():
        u = MyUser.objects.get(username=username)
        info = Profile.objects.filter(user=u)
        instance = Parent.objects.filter(user=u)
        childs = Child.objects.filter(user=u)

        context = {
            'info': info,
            'instance': instance,
            'childs': childs,
            'u': u,
        }
        return render(request, 'public/public_home.html', context)
    else:
        raise Http404

推荐阅读