Django 如何让尚未注册的用户完全访问用户配置文件及其链接?

Django 如何让尚未注册的用户完全访问用户配置文件及其链接?,django,django-models,django-templates,django-views,Django,Django Models,Django Templates,Django Views,我有以下的模板 <div class="profile-navbar"> {% url 'users:profile' user.id as profile_link %} <a class="item home" href="{{ profile_link }}">Home</a> {% url 'users:profile_ask' user.id as profile_ask_link %} <a class="item" href="{{ pr

我有以下的模板

<div class="profile-navbar">
{% url 'users:profile' user.id as profile_link %}
<a class="item home" href="{{ profile_link }}">Home</a>

{% url 'users:profile_ask' user.id as profile_ask_link %}
<a class="item" href="{{ profile_ask_link }}" > Ask <span class="num">0</span></a>

{% url 'users:profile_answer' user.id  as profile_answer_link %}
<a class="item" href="{{ profile_answer_link }}" > Answer <span class="num">0</span></a>

</div>
如果访客键入链接,但页面中的链接(上述模板)不起作用,则可以访问该页面。 我在这里干什么?
谢谢

您可以采取两种方法(第二种是首选方法):

1.)

html:

# Completely making this up, but you'll get the idea
class Model(models.Model):
    user = models.ForeignKey(User)

    def get_profile_url(self):
        return reverse('profile',
                       kwargs={'userid': self.user.id})

    def get_profile_ask_url(self):
        return reverse('profile_ask',
                       kwargs={'userid': self.user.id})

    def get_profile_answer_url(self):
        return reverse('profile_answer',
                       kwargs={'userid': self.user.id})
<a class="item home" href="{{ request.user.get_profile_url }}">Home</a>
<a class="item" href="{{ request.user.get_profile_ask_url }}"> Ask <span class="num">0</span></a>
<a class="item" href="{{ request.user.get_profile_answer_url }}"> Answer <span class="num">0</span></a>
def profile(request, userid):
    user_profile = get_object_or_404(User, id=userid)

    template_name = 'users/profile.html'
    if request.method == 'POST':
         pass
    return render(request, template_name, {'user_profile': user_profile})

你能发布你的网址吗?您给它们命名不正确。@jape我添加了URL。如果用户未登录就进入配置文件页面,您希望用户看到什么?未注册用户如何拥有个人资料?我希望访客能够查看已注册用户的个人资料。未注册的用户没有配置文件。谢谢!第一种方法不起作用。它给出了一个错误。如果访问该页的用户未登录,则user.id不存在。对于参数为“(无、)”且关键字参数为“{}”的“配置文件”,则相反。已尝试1个模式:[u'accounts/profile/(?P\\d+)]@Brian您是否尝试让匿名用户访问现有用户的页面?例如,匿名用户想访问Brian的个人资料?@Brian如果我对上面的评论是肯定的,你也可以发表你的看法吗?另外,请查看我的编辑,以了解对
url.py
所做的更改。是的,我想让网络上的任何人都可以访问用户的个人资料。我添加了查看功能。尚未完成,但不应返回错误?
# Completely making this up, but you'll get the idea
class Model(models.Model):
    user = models.ForeignKey(User)

    def get_profile_url(self):
        return reverse('profile',
                       kwargs={'userid': self.user.id})

    def get_profile_ask_url(self):
        return reverse('profile_ask',
                       kwargs={'userid': self.user.id})

    def get_profile_answer_url(self):
        return reverse('profile_answer',
                       kwargs={'userid': self.user.id})
<a class="item home" href="{{ request.user.get_profile_url }}">Home</a>
<a class="item" href="{{ request.user.get_profile_ask_url }}"> Ask <span class="num">0</span></a>
<a class="item" href="{{ request.user.get_profile_answer_url }}"> Answer <span class="num">0</span></a>
# I'm assuming these are extended from a branch?
url(r'^profile/(?P<userid>\d+)/$', 'profile', name='profile'),
url(r'^profile/ask/(?P<userid>\d+)/$', 'profile_ask', name='profile_ask'),
url(r'^profile/answer/(?P<userid>\d+)/$', 'profile_answer', name='profile_answer'),
def profile(request, userid):
    user_profile = get_object_or_404(User, id=userid)

    template_name = 'users/profile.html'
    if request.method == 'POST':
         pass
    return render(request, template_name, {'user_profile': user_profile})