2

其中django / django / contrib / admin / templates / admin / login.html,表单的动作路径为{{ app_path }}。这是什么意思?此外,在 中change_password_form,根本没有动作路径。表格如何仍然有效?

4

1 回答 1

5

{{ app_path }}是一个模板变量,将替换为从视图传递给它的上下文。在这种情况下,视图位于django/contrib/admin/sites.py

@never_cache
def login(self, request, extra_context=None):
    """
    Displays the login form for the given HttpRequest.
    """
    from django.contrib.auth.views import login
    context = {
        'title': _('Log in'),
        'app_path': request.get_full_path(),
        REDIRECT_FIELD_NAME: request.get_full_path(),
    }
    context.update(extra_context or {})

    defaults = {
        'extra_context': context,
        'current_app': self.name,
        'authentication_form': self.login_form or AdminAuthenticationForm,
        'template_name': self.login_template or 'admin/login.html',
    }
    return login(request, **defaults)

so{{ app_path }}将替换为返回的值request.get_full_path(),即请求来自的路径。在这种情况下,它只是您首先从中加载表单的 URL。


对于第二个问题,空字符串的操作将表单指向浏览器当前已加载的 URL。

于 2013-02-12T07:41:33.290 回答