【问题标题】:link individual user's profile to user in comment section - Django将个人用户的个人资料链接到评论部分中的用户 - Django
【发布时间】:2017-07-05 06:49:39
【问题描述】:

我需要将各个用户的个人资料链接到 cmets。目前,我所有的链接都将我带到登录用户的个人资料本身。

我的用户模型@user_profile/models.py:

class MyUser(AbstractBaseUser, PermissionsMixin):        
    email = models.EmailField(_('email address'), max_length=254, unique=True)        
    .......
    .......

    objects = manager.CustomUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['date_of_birth']

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')

    def get_absolute_url(self):
        return "/users/%s/" % urlquote(self.email)

我的个人资料模型:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                related_name="profile",
                                on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True, default='')
    .....
    .....

    objects = manager.CustomProfileManager()

    def get_absolute_url(self):
        return reverse("user_profile:commenters_profile")

    @property
    def get_profile(self):
        instance = self
        content_type = ContentType.objects.get_for_model(instance.__class__)
        return content_type

评论/models.py:

class Comment(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='comment_by', default=1)
    ....

查看:

@login_required
def commenters_profile(request):
    instance = get_object_or_404(Profile)

    context = {
        "title": instance.title,
        "instance": instance.get_profile(),
        }
    return render(request, "profile.html", context)

user_profile/urls.py:

urlpatterns = [
    url(r'^$', myProfile, name='myProfile'),
    url(r'^$', commenters_profile, name='commenters_profile'),
]

模板:

<p><a href="{{ comment.user.profile.get_absolute_url }}"> {{ comment.user.get_full_name }}</a></p>

请帮忙。

更新:

回溯(最近一次通话最后):

File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.11-py2.7.egg/django/contrib/auth/decorators.py", line 23, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/surajit/website/PubNet/user_profile/views.py", line 173, in commenters_profile
    "instance": instance.get_profile(),
TypeError: 'ContentType' object is not callable

profile.html:

<div class="col-sm-8 col-md-3">
            <img src="{{ user.profile.photo.url }}", width="220", alt="", class="img-rounded img-responsive" />
            <br/><p> <i class="glyphicon glyphicon-envelope"></i> {{ user.email }}
                <br /> <i class="glyphicon glyphicon-gift"></i> {{ user.date_of_birth }}</p>
        </div>
        <div class="col-sm-4 col-md-6">
            <blockquote>
                <p><h2>{{ user.first_name }} {{ user.last_name }}</h2></p>
                <small><cite title="Source Title">Some Text Here <i class="glyphicon glyphicon-map-marker"></i></cite></small>
            </blockquote>
            <br/><p> {{ user.profile.bio }}</p>
        </div>

评论部分截图:

【问题讨论】:

  • 评论的用户名是显示的吗?
  • 是的。名称显示正确。我认为我的观点是不正确的。但是,我无法弄清楚。

标签: python django


【解决方案1】:

因为myProfilecommenters_profile 有相同的正则表达式,你永远无法到达commenters_profile,所有的请求都会被发送到myProfile。更改commenters_profile网址:

url(r'^(?P<pk>\d+)/$', commenters_profile, name='commenters_profile'),

修复get_absolute_url方法:

def get_absolute_url(self):
    return reverse("user_profile:commenters_profile", kwargs={'pk': self.pk})

并查看:

@login_required
def commenters_profile(request, pk):
    instance = get_object_or_404(Profile, pk=pk)

    context = {
        "title": instance.title,
        "instance": instance.get_profile(),
        }
    return render(request, "profile.html", context)

【讨论】:

  • 给出错误“commenters_profile() got an unexpected keyword argument 'pk'”。我要对视图进行哪些更改?
  • 我做了同样的事情,但它现在给了我一个 TypeError "'ContentType' object is not callable"。
  • 没有 get_profile 不起作用。仅链接到登录的用户配置文件。我已经用 traceback 和 get_profile() 更新了我的问题
  • instance.get_profile() 是一个错字。我添加了评论部分的屏幕截图,它确实显示了两个不同的用户。还附上了 profile.html。
  • 将 {{ user.xxxx }} 更改为 {{ instance.xxxx }} 无法检索数据。虽然没有错误。 :(
猜你喜欢
  • 2014-10-09
  • 2012-09-06
  • 2012-01-20
  • 2020-09-17
  • 2023-03-12
  • 1970-01-01
  • 2018-09-27
  • 2013-12-18
  • 1970-01-01
相关资源
最近更新 更多