我读过一些关于 reverse
函数的内容,但我不明白。
我的两个网址正在调用同一个 View 。 在这个 View 中,我需要根据 url 来决定上下文。
urls.py:
urlpatterns = [
path('view/', my_view),
path('edit/', my_view),
]
views.py:
def my_view(request):
#some code
if(my_url_path == 'view/'): #just taking a look
context = {
'task': 'view'
}
elif(my_url_path == 'edit/'): #can edit
context = {
'task': 'edit'
}
我没有为这些路径使用两个不同的 View ,因为它的代码非常广泛,我可以保存许多重复的行(DRY)。它们做的事情非常相似,我可以根据 View 发送的上下文调整模板中的这些小差异。
我怎样才能做我在 View 中显示的内容?谢谢!
最佳答案
最佳做法是将其分成两个不同的 View ,并将通用代码移到别处。
但是,如果您想要访问路径,您只需调用 request.path_info
即可,如文档中所述 here
或者,您可以在 url 上使用捕获组为了进一步简化,前提是 url 模式对于您的 urls.py 中的其他模式是唯一的。以下内容
urls.py:
path('<task>/', my_view, name='my_view'),
View .py
def my_view(request, task):
context = { 'task': task }
关于python - Django:如何获取 url 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54945781/