【问题标题】:How to get primary key from template in django?如何从 django 中的模板获取主键?
【发布时间】:2020-10-24 15:48:57
【问题描述】:

在这里,我正在尝试获取 user_to_toggle id,但没有出现,我想这是因为我做错了什么。我很困惑如何获得 user_to_toggle id。我正在获取他的用户名,但我也想要用户 ID。这是我的代码。

视图,pyy

class UserProfileFollowToggle(LoginRequiredMixin,View):
    login_url = '/accounts/login/'
    def post(self, request, *args, **kwargs):
            user_pk_to_toggle=kwargs.get('pk') #this is returning None. 
            username_to_toggle = request.POST.get("username")#this is returning me username of toggle user. 
            profile_, is_following = UserProfile.objects.toggle_follow(request.user, request.user.id ,username_to_toggle)
            return redirect(f'/profiles/{username_to_toggle}')

follow_to_toggle.html

<form class='form' method='POST' action="{% url 'profiles:toggle'%}">
{% csrf_token %}
<input type='hidden' name='username' value="{% if username %}{{ username }}{% else %}hello{% endif %}">
<button class='btn {% if is_following %}btn-warning{% else %}btn-primary{% endif %}'>{% if is_following %}Unfollow {% else %}Follow{% endif %}</button>
</form>

如果需要比告诉我更多的代码,我将使用该信息更新我的问题。

urls.py

app_name = 'profiles'

    urlpatterns = [
        path('user-profile/',UserProfileFollowToggle.as_view(),name = 'toggle'),
        path('<str:username>/',UserProfileDetailView.as_view(),name = 'detail'),
    
    ]

【问题讨论】:

  • 添加与该视图相关的url文件。
  • 我已经添加了它们。你现在可以看到了。

标签: python django django-models django-views django-templates


【解决方案1】:

kwargs.get('pk') 返回 None 因为您实际上没有提供任何关键字参数。如果您希望它返回一个值,您的 url 路径应该类似于 user-profile/&lt;int:pk&gt;/。因此,您应该相应地更改您的模板{% url 'toggle' user_to_toggle.id %}。您需要在渲染页面时将user_to_toggle 对象传递给上下文,或者以其他方式检索它,可能是通过相关的模型对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 2011-11-22
    • 2015-05-23
    • 2011-11-11
    • 2011-02-10
    • 1970-01-01
    • 2018-09-23
    • 2018-04-14
    相关资源
    最近更新 更多