【问题标题】:how do i edit other users profile on django我如何在 django 上编辑其他用户的个人资料
【发布时间】:2020-10-03 20:25:37
【问题描述】:

我有两个独立的用户,我希望一些用户能够修改其他用户的个人资料。我现在面临的问题是如何获取用户 ID。我对此有两个意见。纵断面图,编辑纵断面图。我试图将整个配置文件 html 包装在一个表单中,我不确定这是否可行。 大多数示例仅显示如何编辑当前(登录)用户的个人资料。

指向特定用户个人资料的链接 (http://127.0.0.1:8000/dashboard/profile/dfrtgy-ehehh/16) 个人资料页面有一个指向编辑个人资料页面的链接。

个人资料html

   <li>
                        <a href="{% url 'editprofile' %}"><img class="nav-items" src="{% static 'images/lab.svg'%}" alt=""><span>Edit profile</span>
                        </a>
                    </li>

views.py

def edit_profile(request):
    if request.method == 'POST':
        profile = Profile.objects.get(pk=pk)
        form = EditProfileForm(request.POST, instance=request.user.profile)

        if form.is_valid():
            form.save()
            return redirect(f'/dashboard/profile/{request.user.profile.slug}/{request.user.pk}')
    else:
       
        form = EditProfileForm(instance=request.user.profile)
        args = {'form': form}
        return render(request, 'core/editprofile.html', args)

def profile(request, slug, pk):
    profil = Profile.objects.get(slug=slug)
    profile = Profile.objects.get(pk=pk)
    context = {'profile': profile, 'profil': profil}
    return render(request, 'dashboard/profile.html', context)

urls.py

urlpatterns = [
    path('', dashboard, name='dashboard'),
    path('profile/', profile, name='profile'),
    path('profile/<str:slug>/<int:pk>', profile, name='profilepk'),
    path('edit_profile/', edit_profile, name='editprofile'),

【问题讨论】:

    标签: python django


    【解决方案1】:

    我猜您正在尝试编辑您所在个人资料的用户。您可能想尝试获取当前用户(您所在个人资料的用户)的 ID 并将其传递到 editprofile URL,如下所示:

    <li>
    <a href="{% url 'editprofile' profile.user.id %}"><img class="nav-items" src="{% static 'images/lab.svg'%}" alt=""><span>Edit profile</span>
    </a>
    </li>
    

    然后用url传递它:

     path('edit_profile/<int:id>/', edit_profile, name='editprofile'),
    

    在您的 editprofile 视图中,执行以下操作:

        from django.shortcuts import render, redirect, get_object_or_404
    
    def edit_profile(request,id):
        profile = Profile.objects.get(user_id=id)
        user = get_object_or_404(Profile, pk=id, user=profile.user.id)
        if request.method == 'POST':
           
            form = EditProfileForm(request.POST, instance=profile)
    
            if form.is_valid():
                form.save()
                return redirect(f'/dashboard/profile/{profile.user.slug}/{profile.user.pk}')
            else:
                return HttpResponse('Could not save')
    
        else:
           
            form = EditProfileForm(instance=user)
            args = {'form': form}
            return render(request, 'core/editprofile.html', args)
    

    希望这会有所帮助! (:

    【讨论】:

    • 它不起作用,我收到edit_profile() got an unexpected keyword argument 'id'
    • 我认为editprofile view是为了保存你的个人资料吧?
    • 不,编辑个人资料视图是编辑其他用户个人资料
    • 只需将参数中的 user_id 更改为 id 即可! (:
    • 我修复了一些问题。我面临的新问题是表单无法保存。感谢您的帮助,我将创建一个新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2020-11-27
    • 1970-01-01
    • 2017-11-10
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多