Django:如何获取网址路径?

我读过一些关于reverse函数的东西,但我不明白。


我的两个网址正在调用相同的视图。在这个视图中,我需要根据 url 来决定上下文。


网址.py:


urlpatterns = [

    path('view/', my_view),

    path('edit/', my_view),

]

视图.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'

        }

我不为这些路径使用两个不同的视图,因为它的代码非常广泛,我可以保存许多重复的行 (DRY)。他们做了一些非常相似的事情,我可以根据视图发送的上下文调整模板中的这些小差异。


我该如何做我在视图中显示的内容?谢谢!


料青山看我应如是
浏览 194回答 2
2回答

幕布斯6054654

最佳实践是将其分解为两个不同的视图,并将公共代码移到别处。但是,如果您想访问路径,您可以request.path_info按照此处的说明进行调用或者,您可以在url上使用捕获组来进一步简化,前提是 url 模式对于 urls.py 中的其他人是唯一的。以下内容网址.py:path('<task>/', my_view, name='my_view'),视图.pydef my_view(request, task):&nbsp; &nbsp; context = { 'task': task }

慕桂英546537

你可以试试这个urlpatterns = [&nbsp; &nbsp; path('view/', my_view, 'first_url'),&nbsp; &nbsp; path('edit/', my_view, 'second_url'),]鉴于from django.urls import resolvedef my_view(request):&nbsp; &nbsp;current_url = resolve(request.path_info).url_name&nbsp; &nbsp;if(current_url == 'first_url'):&nbsp; #just taking a look&nbsp; &nbsp; &nbsp; &nbsp; context = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'task': 'view'&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;elif(current_url == 'second_url'):&nbsp; #can edit&nbsp; &nbsp; &nbsp; &nbsp; context = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'task': 'edit'&nbsp; &nbsp; &nbsp; &nbsp; }希望能帮助到你
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python