首页 > 解决方案 > 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/有效。

请帮我解决这个问题。

标签: pythonhtmldjangodjango-modelsdjango-urls

解决方案


推荐阅读