📅  最后修改于: 2023-12-03 14:53:03.103000             🧑  作者: Mango
在Django中,我们可以使用URLconf来将请求的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对象中的title
和content
字段。但是,在实际应用程序中,我们可能会呈现更复杂的内容。
我们可以使用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。