Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django settings.py中引用URL_Django - Fatal编程技术网

如何在Django settings.py中引用URL

如何在Django settings.py中引用URL,django,Django,我正在尝试引用settiings.py文件中的url。 我目前在我的url.py文件中有这个 from django.urls import ( path, reverse_lazy, re_path ) my_app = 'accounts' re_path( r'^reset_password_confirm/(?P<uidb64>[0-9A-Za-z_-]+)-(?P<token>.+)/$',

我正在尝试引用settiings.py文件中的url。 我目前在我的url.py文件中有这个

from django.urls import (
    path,
    reverse_lazy,
    re_path
)
     my_app = 'accounts'

     re_path(
            r'^reset_password_confirm/(?P<uidb64>[0-9A-Za-z_-]+)-(?P<token>.+)/$',
            PasswordResetConfirmView.as_view(
                success_url = reverse_lazy('accounts:password_reset_complete')
             ),
            name = 'password_reset_confirm',
            ), 
我想我的主要问题是

"r'^accounts/reset_password_confirm/(?p<uidb64>[0-9A-Za-z_-]+)-(?p<token>.+)/$'"
“r'^accounts/reset\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

因为其他的似乎都起作用了,我想我终于明白了。问题在于自定义登录中间件 进程视图功能。我应该导入're'模块并改为这样做

from django.conf import settings
from django.shortcuts import redirect,render
from django.urls import reverse
import re

EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]     

class LoginRequired:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self,request):
        response = self.get_response(request)
        return response

    def process_view(self, request, view_func, view_args, view_kwargs,):
        assert hasattr(request, 'user')
        path = request.path_info.lstrip('/')

        url_is_exempt = any(url.match(path) for url in EXEMPT_URLS)

        if request.user.is_authenticated and url_is_exempt:
            if path == reverse('accounts:homepage').lstrip('/'):
                return None
            return redirect(settings.LOGIN_REDIRECT_URL)

        elif request.user.is_authenticated or url_is_exempt:
            return None

        else:
            return redirect(settings.LOGIN_REDIRECT_URL).
主要方面是

EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]


有了这个,我可以通过从url
r'^accounts/reset\u password\u confirm/(?p[0-9A-Za-z'-]+)-(?p.+)/$)中删除
^
$
来匹配url。但是你知道正则表达式在“r'^accounts/reset_password\u confirm/(?p[0-9A-Za-z_-])-(?p.+)/$”中是否正确吗?你能添加你在问题中遇到的错误吗?该程序的逻辑是通过将用户重定向到主页执行器来限制用户访问网站中的某些页面,而不是登录URL。每当我尝试获取url时,它都会将我重定向到主页如果所有url都正常工作,然后尝试删除正则表达式表单url
accounts/reset\u password\u confirm/
from django.conf import settings
from django.shortcuts import redirect,render
from django.urls import reverse
import re

EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]     

class LoginRequired:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self,request):
        response = self.get_response(request)
        return response

    def process_view(self, request, view_func, view_args, view_kwargs,):
        assert hasattr(request, 'user')
        path = request.path_info.lstrip('/')

        url_is_exempt = any(url.match(path) for url in EXEMPT_URLS)

        if request.user.is_authenticated and url_is_exempt:
            if path == reverse('accounts:homepage').lstrip('/'):
                return None
            return redirect(settings.LOGIN_REDIRECT_URL)

        elif request.user.is_authenticated or url_is_exempt:
            return None

        else:
            return redirect(settings.LOGIN_REDIRECT_URL).
EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]
url_is_exempt = any(url.match(path) for url in EXEMPT_URLS)