python - Django pk 在锚标记中无法正常工作
问题描述
最近我创建了一个模型来保存我们学院的ieeeXtreme排名,并用它创建了另一个模型来连接xtreme版本和它的团队。
模型.py 是:
class Xtreme(models.Model):
version=models.IntegerField(default=9,primary\_key=True)
team\_no=models.IntegerField(default=1)
def \_\_str\_\_(self):
return str(self.version)
class Team(models.Model):
version=models.ForeignKey(Xtreme,on\_delete=models.CASCADE)
team\_name=models.CharField(max\_length=50)
global\_rank=models.IntegerField(default=1)
region\_rank=models.IntegerField(default=1)
country\_rank=models.IntegerField(default=1)
college\_rank=models.IntegerField(default=1)
def \_\_str\_\_(self):
return str(self.version)
然后我创建了一个模板 xtreme.html 以将特定版本数据加载到模板中。在主索引页面中,我为我们学院加载了所有版本的 IeeeXtreme,并希望将每个版本与其数据连接起来,所以我使用 PrimaryKey 通过 url 加载它。
url.py 是:
from django.contrib import admin
from django.urls import path,include
from . import views
# from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('',views.main,name='main'),
path('xtreme/<int:pk>/',views.xtreme,name='xtreme')
]
view.py 是:
from django.shortcuts import render,get_object_or_404
from django.utils import timezone
from django.http import HttpResponse
from .models import *
def main(request):
xtreme=Xtreme.objects.all().order\_by("-version")
context={
"xtreme":xtreme,
}
return render(request,'index.html',context)
def xtreme(request,pk):
xtreme=Xtreme.objects.filter(version=pk).order\_by("-version")
team=Team.objects.filter(version\_\_version=pk).order\_by("college\_rank")
post = get\_object\_or\_404(Xtreme, pk=pk)
context={
"team":team,
"xtreme":xtreme,
"post":post,
}
return render(request,'xtreme.html',context)
索引.html
{% load static %}
<section class="sec4" id="xtreme">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1> IEEEXtreme</h1>
</div>
{% for j in xtreme%}
<div class="col-sm-12">
<a href="{% url 'xtreme' pk=post.pk%}"><h3>IEEEXtreme {{j.version}} Rank of our college.</h3></a>
</div>
{% endfor %}
</div>
</div>
</section>
但是当我点击链接时,它把我带到了网址http://127.0.0.1:8000/xtreme/%3Cversion%3E/,但是当我手动输入http://127.0.0.1:8000/xtreme/9/有效。
请帮我解决这个问题。
解决方案
推荐阅读
- sql - 从 2 个表中查询匹配条件的 SQL
- python - Paramiko - 错误的身份验证类型 [Cisco SG-300 交换机]
- php - PHPML库问题
- r - 安装具有依赖项 R 的重复包
- google-sheets - 带有 OR 但没有 SUM 的 COUNTIFS
- asp.net - Asp 网络表单 C# 中的 Elmah 页面限制
- bash - 无法在 Docker 中构建最新的 Jenkins
- spring - 如何在应用程序启动并运行时重新加载 WebSecurityConfigurerAdapter 的 Configure 方法
- javascript - 从 Angular 6 调用时,节点中的 Passport-azure-ad 不会重定向到 Microsoft 登录页面
- r - 使用 fread 将向量中的元素拆分到不同的列