python - Django:如何获取 url 路径?

标签 python django url path reverse

我读过一些关于 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/

相关文章:

jquery - Django-ajax-验证: Validate form fields on click of specified button with ajax

java - 如何测试 String 是否为 URL 格式?

python - PNG、GIF 等的 Tensorflow Label_Image

python - 类属性的多个值

python - 如何在 lisp 中定义这样的常量?

python - django在gae(谷歌应用引擎)中是否有类似 'render_template'的方法

Django 外键上的不同模型管理器

python - Django - 模板或 View 中的标记解析器?

angularjs - AngularJS用$ location更改URL

r - 我想检查 url 是否重定向到 R 中的另一个页面