繁体   English   中英

如何从 django 模板中获取主键?

[英]How to get primary key from template in django?

在这里,我试图获取 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>

如果需要更多代码而不是告诉我,我会用这些信息更新我的问题。

网址.py

app_name = 'profiles'

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM