📜  如何将主键传递给 url django - Python (1)

📅  最后修改于: 2023-12-03 14:53:03.103000             🧑  作者: Mango

如何将主键传递给 URL - Django

在Django中,我们可以使用URLconf来将请求的URL映射到特定的视图。有时我们需要在URL中包含视图中使用的对象的主键。以下是如何使用主键将其传递给URL的步骤:

第一步:定义URL路径

我们需要定义一个URL路径,该路径将包含我们要传递的主键。在URL的路径中,我们将使用<int:pk>捕获主键并将其传递给视图。

# urls.py
from django.urls import path
from .views import MyView

app_name = 'myapp'

urlpatterns = [
    path('myview/<int:pk>/', MyView.as_view(), name='myview'),
]
第二步:定义视图

视图是负责呈现页面内容的Python函数或类。在视图中,我们可以使用主键来获取特定的对象并渲染它们。

# views.py
from django.shortcuts import render
from django.views import View
from .models import MyModel

class MyView(View):
    template_name = 'mytemplate.html'
    
    def get(self, request, pk):
        myobject = MyModel.objects.get(pk=pk)
        context = {'myobject': myobject}
        return render(request, self.template_name, context)

在这里,我们定义了一个MyView视图类。在该类中,我们定义了一个get方法,该方法获取传递的主键并获取数据库中的特定对象。然后,我们将该对象存储在上下文中,以便在模板中访问它。

第三步:创建模板

模板是决定如何呈现内容的HTML文件。在模板中,我们可以使用上下文中存储的特定对象来呈现内容。

<!-- mytemplate.html -->
<h1>{{ myobject.title }}</h1>
<p>{{ myobject.content }}</p>

在这个简单的例子中,我们只呈现MyModel对象中的titlecontent字段。但是,在实际应用程序中,我们可能会呈现更复杂的内容。

第四步:生成URL

我们可以使用Django的URL反向解析来生成带有主键的URL。这是使用Django模板语言中的url标签完成的。

<!-- index.html -->
{% for myobject in myobjects %}
    <a href="{% url 'myapp:myview' pk=myobject.pk %}">{{ myobject.title }}</a>
{% endfor %}

在这里,我们生成一个链接到myview的URL,并通过pk关键字参数将主键传递给URL。注意,myapp是应用程序的名称,我们使用pk关键字来指定主键。

结论

使用上述步骤,我们可以轻松地将主键传递给Django视图中的URL。我们定义了URL路径,视图和模板,并实现了URL反向解析来生成带有主键的URL。