在 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() 得到了一个意外的关键字参数“异常”