django 我希望在用户单击传递到配置文件页面时创建URL-- NoReverseMatch at /home

mnemlml8  于 2023-01-31  发布在  Go
关注(0)|答案(1)|浏览(104)

当用户单击传递到配置文件页面时,我想创建url

++++型号

class profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    music = models.CharField(max_length=50)
    skils = models.CharField(max_length=50)
    search = models.CharField(max_length=50)
    posts = models.CharField(max_length=50)
    boi = models.TextField()
    img = models.ImageField(upload_to="profile-img")

    def __str__(self):
        #return self.user or 'User'
        return str(self.id)

def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = profile.objects.create(user=kwargs['instance'])

post_save.connect(create_profile, sender=User)

+++视图

def home(request): 
    return render(request, 'main-frond.html')

def profile_edit(request, id):
    pro_edit = profile.objects.get(id=id)
    if request.method == 'POST':
        user_form = User_Form(request.POST, request.FILES, instance=pro_edit)
        if user_form.is_valid():
            user_form.save()
            return redirect('profile_views')
    else:
        user_form = User_Form(instance=pro_edit)
    context = {'user_form' : user_form}
    return render(request, 'profile_edit.html', context)

+++网址

path('home', views.home, name="home"),
    path('profile/<int:id>/edit', views.profile_edit, name="profile_edit")

+++ html

<a href="{% url 'profile_views' %}">profile</a>

django给予我问题

Reverse for 'profile_views' with no arguments not found. 1 pattern(s) tried: ['profile/(?P<id>[0-9]+)\\Z']

当用户单击传递到配置文件页面时,我想创建url

k4aesqcs

k4aesqcs1#

看起来您正在尝试为Django应用程序创建一个未正确配置的URL。错误消息“Reverse for 'profile_views' with no arguments not found”表明您没有在URL模式中为'profile_views'视图提供正确的参数。
看起来在URL模式中,您希望将参数“id”传递给视图,但实际上没有传递。请确保在将用户重定向到配置文件页时在URL中传递“id”参数。
例如,您可以在URL中传递id,如下所示:

path('profile/<int:id>/', views.profile_views, name='profile_views'),

然后在你的网站上views.py

def profile_views(request, id):
    profile = get_object_or_404(Profile, pk=id)
    return render(request, 'profile.html', {'profile': profile})

然后,在将用户重定向到配置文件页面时,您可以按如下方式传递配置文件的“id”:

return redirect('profile_views', id=profile.id)

您还应确保profile_views函数是在www.example.com中定义views.py,并将其导入到urls.py文件中。

相关问题