在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'”

Posted

技术标签:

【中文标题】在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:\'Trancel\'”【英文标题】:Got "ValueError: invalid literal for int() with base 10: 'Trancel'" when using two paramenters in detailview in Django在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'” 【发布时间】:2019-01-04 21:58:40 【问题描述】:

我正在尝试在详细视图中使用除 pk 和 slug 之外的其他两个 url 标签。我有以下代码sn-p:

视图.py 类用例详细视图(详细视图): template_name = "useCaseExtract/useCaseDetail.html" 模型 = 用例配置文件 context_object_name = '用例配置文件' '''我正在尝试覆盖 DetailView 的 get_object 方法以接受 url 标签项目和用例名而不是 pk 和 slug''' def get_object(self): obj = get_object_or_404(UseCaseProfile, project=self.kwargs['project'], useCasename=self.kwargs['useCasename']) 返回对象 网址.py ... path('/UseCaseDetail/', UseCaseDetailView.as_view(), name='UseCaseDetail') ... 在我的模板文件中,我有以下链接: /Trancel/用例详细信息/无 点击链接后,我得到: ValueError: int() 以 10 为底的无效文字:'Trancel' 你能解释一下为什么我会收到这个错误吗?

【问题讨论】:

【参考方案1】:

您能否将Trance1 重命名为TranceOne 之类的名称?所以它不包含整数?

我认为您的问题是 1 在解析 URL 时..(因为它期待一个刺痛,但它得到带有 1 的字符串)。

【讨论】:

我发现了这个问题。项目 url 标记用于我将要查询的模型中的外键。我修改了详细视图中的 get_object 代码,如下所示。 def get_object(self): project=Project.objects.all() x=project.filter(projectName=self.kwargs['project']) print(self.kwargs['project']) print(self.kwargs[' useCasename']) obj = get_object_or_404(UseCaseProfile, project=x.first(), useCasename=self.kwargs['useCasename']) return obj【参考方案2】:

项目 url 标签是 UseCaseProfile 模型中的外键。为了查询UseCaseProfile,我修改了detailview中的get_object代码如下。

def get_object(self):
        project=Project.objects.all()
        x=project.filter(projectName=self.kwargs['project'])
        obj = get_object_or_404(UseCaseProfile, project=x.first(), useCasename=self.kwargs['useCasename'])
        return obj

【讨论】:

以上是关于在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'”的主要内容,如果未能解决你的问题,请参考以下文章

难以将 slug 添加到 Django 中的通用详细信息视图

Django - error_403() 得到了一个意外的关键字参数“异常”

Django:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数

Django url()函数详解

Django:如何在我的视图中逐个迭代一个对象?

Django:不推荐使用对 url() 的字符串视图参数的支持,并将在 Django 1.10 中删除