社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django错误:int()参数必须是字符串、类似于对象的字节或数字,而不是“User”

Hamza Lachi • 5 年前 • 1928 次点击  

如何修复此错误:

int() argument must be a string, a bytes-like object or a number, not 'User'

我想创建用户配置文件,我累了修复!

我想在他注册时创建用户页,但我一次又一次地收到这个错误

基.Html

  {% if user.is_authenticated %}
  <li class="nav-item">

    <a class="nav-link navaour" href="{% url 'profile' pk=user.pk %}"><i class="fa fa-user"></i>&nbsp; Profile</a>
  </li>
  <li class="nav-item">

    <a class="nav-link navaour" href="{% url 'logout' %}"><i class="fa fa-power-off"></i>&nbsp; Logout</a>
  </li>

  {% else %}
  <li class="nav-item">

    <a class="nav-link navaour" href="{% url 'register' %}"><i class="fa fa-check-square-o"></i>&nbsp; Sign up Free</a>
  </li>    
  <li class="nav-item">

    <a class="nav-link navaour" href="{% url 'login' %}"><i class="fa fa-user"></i>&nbsp; Login</a>
  </li>
  {% endif %}  

网址.py

from . import views
from django.urls import path

urlpatterns = [
    path('', views.index,name='index'),
    path('accounts/signup/', views.user_reg,name='register'),
    path('profile/<int:pk>',views.profile_detail,name='profile')

]

视图.py

def profile_detail(request,pk):
    pk = User.objects.get(pk=pk)
    model = get_object_or_404(User, pk=pk)
    template_name = 'profile_detail_view.html'

这是我的 模型.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse

# Create your models here.
class user_register_model(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse("profile",kwargs={'pk':self.pk})

错误:

enter image description here

感谢任何帮助 谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49519
 
1928 次点击  
文章 [ 4 ]  |  最新文章 5 年前
Sammy J
Reply   •   1 楼
Sammy J    5 年前

我想这是你的问题 views.py 守则 User.objects.get(pk=pk) ,返回用户对象。所以你的密码一定是

user=User.objects.get(pk=pk)

model = get_object_or_404(User, pk=user.pk)
Linh Nguyen
Reply   •   2 楼
Linh Nguyen    5 年前

在要将用户id作为参数传递到url的配置文件路径中:

path('profile/',views.profile\u detail,name='profile')

但是您将用户模型而不是模板中的id传递给它:

<a class="nav-link navaour" href="{% url 'profile' pk=user.pk %}"><i class="fa fa-user"></i>&nbsp; Profile</a>

应该是这样的:

<a class="nav-link navaour" href="{% url 'profile' pk=user.id %}"><i class="fa fa-user"></i>&nbsp; Profile</a>

要将pk string转换为int进行查询,您需要fix to view:

def profile_detail(request,pk):
    model = get_object_or_404(User, pk=int(pk))
    template_name = 'profile_detail_view.html'
user6837382
Reply   •   3 楼
user6837382    5 年前
class user_register_model(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)

    def __str__(self):
        return str(self.user.username)

    def get_absolute_url(self):
        return reverse("profile",kwargs={'pk':self.pk})

添加 str公司 对您的模型起作用

ha-neul
Reply   •   4 楼
ha-neul    5 年前
def profile_detail(request,pk):
    pk = User.objects.get(pk=pk)
    model = get_object_or_404(User, pk=pk)
    template_name = 'profile_detail_view.html'

尝试删除以下行:

pk = User.objects.get(pk=pk)