首页 > 解决方案 > 将上下文对象名称直接传递给 html,如 django 中的 href="{% url 'profileEdit' here %}"

问题描述

在这里,我正在尝试编辑当前登录的用户的个人资料。

网址.py

path('profileEdit/<int:pk>/',views.profileEdit.as_view(),name='profileEdit'),

视图.py

class profileEdit(UpdateView):
    model =  Profile
    fields = ['bio', 'photo']
    template_name = 'Blog/profileEdit.html'
    success_url = '/newsfeed/'
    context_object_name = 'form'
    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)

def profileuser():
    me = Profile.objects.get(user=request.user)
    contex={
     'u':me.pk,
    }

    return render(request,'Blog/base.html',contex)

base.html

<div class="dropdown-menu">
     <a class="dropdown-item" style="font-size:20px;color:red" href="{% url 'profileEdit' something %}">Edit Profile
     </a> 

我想放一些东西,something通过它可以获得像'profileEdit/2/'这样的URL。代替我们可以放的东西,request.user.pk但问题是我不想让用户pk。取而代之的是,我想要配置文件 pk 因此,我创建了profileuser函数,通过该函数我可以将上下文对象传递给 html url,但不知道该怎么做。

标签: django

解决方案


将此添加到您的更新功能中

lookup_field = 'pk'

代替某些东西添加 'u' 。这个你是你在你的上下文字典中传递profileuser() function


推荐阅读