如何在Django中链接到其他用户的个人资料?

胡安·马丁·扎巴拉(Juan Martin Zabala):

我一直在尝试单击帖子的作者(创建该帖子的用户),我希望它将我重定向到该用户的个人资料,例如在Instagram中,当您单击该帖子顶部的用户时,会将您重定向他们的个人资料。每次我这样做时,都不会看到帖子的作者个人资料,而是看到已登录的用户个人资料。我认为views.py文件或base.html中有问题。

views.py

    def profile(request, pk=None):
        if pk:
            user = get_object_or_404(User, pk=pk)
        else:
            user = request.user
        args = {'user': user}
        return render(request, 'profile.html', args)

    def home(request):
        created_posts = Create.objects.all().order_by("-added_date")
        return render(request, 'base.html', {"created_posts": created_posts})

    def create(request):
        if request.method == 'POST':
            created_date = timezone.now()
            header1 = request.POST['header']
            content1 = request.POST['content']
            user = request.user
            created_obj = Create.objects.create(added_date=created_date, title=header1, content=content1, user=user)
            created_obj.save()
            print('create created')
            return redirect('home')
        else:
            print('create not created')
            return render(request, 'create.html')

models.py

    class Create(models.Model):
        added_date = models.DateTimeField()
        title = models.CharField(max_length=200)
        content = models.CharField(max_length=200)
        user = models.ForeignKey(User, related_name='user', on_delete=models.CASCADE, default=1)

    class Profile(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

urls.py

    urlpatterns = [
        path('', views.home, name='home'),
        path('profile', views.profile, name='profile'),
        path('profile/<int:pk>/', views.profile, name='profile_pk'),
        path('create', views.create, name='create'),
    ]

profile.html(显示用户的个人资料)

    {% extends 'home.html' %}
    {% block body%}
    <div class="content-section">
      <div class="media">
        <img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
        <div class="media-body">
          <h2 class="account-heading">{{ user.username }}</h2>
          <p class="text-secondary">{{ user.email }}</p>
        </div>
      </div>
    </div>
    {% endblock %}

base.html(显示带有用户名的所有用户帖子)

    {% extends 'home.html' %}
    {% block body %}
      <ul action="{% url 'create' %}" class="container-sm list-group" style="margin-top: 200px;">
        {% for created_post in created_posts %}
        <li class="list-group-item">{{ created_post.title }}
          <a href="{% url 'profile_pk' pk=user.pk %}">{{ created_post.user }}</a>
          <p>{{ created_post.content }}</p>
          <div class="float-right">
            <form action="delete_create/{{ created_post.id }}/" action="post">
              <button type="submit" class="btn btn-outline-danger btn-sm">Delete</button>
            </form>
          </div>
          <div class="float-right">
            <a href="{% url 'edit' created_post.id %}" class="btn btn-outline-warning btn-sm" style="margin-right: 5px;" role="button">Edit</a>
          </div>
        </li>     
       {% endfor %}            
     </ul>
     {% endblock %}

home.html(显示已登录用户的导航栏)

    <body>
<nav class="navbar navbar-expand-md fixed-top navbar-dark" style="background-color: rgba(0, 0, 0, 0.712);">
    <div class="container">
      <a class="navbar-brand" href="/">
        <img src="static/style/images/logowebdev-png.png" alt="logo" style="width: 60px; height: auto;">
      </a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample07" aria-controls="navbarsExample07" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarsExample07">
        <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
          <li class="nav-item">
            <a class="nav-link"  style="margin-left: 30px;" href="/">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link"  style="margin-left: 30px;" href="/profile">profile</a>
          </li>
          <li class="nav-item">
            <a class="nav-link"  style="margin-left: 30px;" href="#">Pricing</a>
          </li>
        </ul>
        <ul class="navbar-nav ml-auto">
          {% if user.is_authenticated %}
          <div class="float-right">
              <li class="nav-item active">
                  <a class="nav-link" href="#">New post</a>
              </li>
          </div>
          <div class="float-right">
            <li class="nav-item active">
              <a class="nav-link" href="">{{ user.username }}</a>
            </li>
          </div>
          <div class="float-right">
            <li class="nav-item">
              <a class="nav-link" href="/logout">Logout</a>
            </li>
          </div>
          {% else %}
          <div class="float-right">
            <li class="nav-item">
              <a class="nav-link" href="/login">Login</a>
            </li>
          </div>
          <div class="float-right">
            <li class="nav-item">
              <a class="nav-link" href="/register">Register</a>
            </li>
          </div>
          {% endif %}
        </ul>
      </div>
    </div>
  </nav>
  {% block body %}

  {% endblock %}
</body>
洋甘菊:

base.html文件更改中

<a href="{% url 'profile_pk' pk=user.pk %}">{{ created_post.user }}</a>

<a href="{% url 'profile_pk' pk=created_post.user.pk %}">{{ created_post.user }}</a>

因为,您必须将帖子所有者的ID传递到视图。当仅使用用户时,django将检测经过身份验证的用户对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何允许用户在Django中编辑其个人资料?

如何访问Django模板中的用户个人资料?

如果是您的个人资料,则新闻提要中的帖子会重复出现,其他用户的帖子只会出现一次

C#Selenium使用其他用户个人资料启动Chrome

如何在其他组件中显示单击的用户个人资料数据?

如何添加链接到个人资料?Django 2.1.5

如何正确更新Django中的用户个人资料

如何在Django上链接到用户的个人资料

如何在Django上编辑其他用户个人资料

其他用户的个人资料未显示,仅显示当前用户名。如何显示其他用户的个人资料?

登录的用户正在访问其他用户个人资料

如何在Joomla用户个人资料编辑表单上添加其他字段?

如何在我的PHP代码中设置个人资料名称或其他用户名

Django-查看其他用户资料

如何将通过Facebook登录获取的个人资料图片设置为其他活动中的用户个人资料

两个单独的模板个人资料页面供用户本人和其他用户使用?

如何在流星中获取其他用户的个人资料详细信息

链接到用户个人资料Rails

导航到其他用户的个人资料(laravel 5.2)

显示其他用户的用户资料

在django中以其他用户身份查看个人资料页面

如何防止用户访问其他用户的个人资料?

如何通过简单地更改 url 中的 id 来防止登录用户访问其他用户的个人资料,在 django 中?

其他用户如何在 octobercms 中查看用户的个人资料详细信息?

防止在 django 中编辑其他用户的个人资料

如何在 Django 中创建链接以使其他用户无法访问它们?

如何在不影响其他用户的个人资料的情况下向用户的个人资料添加数据 React

Android studio 如何让查看某人个人资料的其他用户的可见性消失 Firebase

如何限制其他用户在 Django 中查看?