如何制作python正则表达式?
我正在为Django开发loginMiddleware类。此中间件类必须在未登录时将用户发送到登录页。但也有一些例外 因为我运行内置的django服务器,所以我必须创建一个媒体url。但要知道,当登录页面加载javascript文件时,javascript文件就是登录页面,因为用户没有登录。因此,我发表了一项声明:如何制作python正则表达式?,python,regex,django,Python,Regex,Django,我正在为Django开发loginMiddleware类。此中间件类必须在未登录时将用户发送到登录页。但也有一些例外 因为我运行内置的django服务器,所以我必须创建一个媒体url。但要知道,当登录页面加载javascript文件时,javascript文件就是登录页面,因为用户没有登录。因此,我发表了一项声明: from django.http import HttpResponseRedirect from django.conf import settings import re cla
from django.http import HttpResponseRedirect
from django.conf import settings
import re
class loginMiddelware:
def process_request(self,request):
if request.path != settings.LOGIN_PATH and request.user.is_anonymous():
if request.path.find('media') <= 0:
return HttpResponseRedirect(settings.LOGIN_PATH)
else:
return None
从django.http导入HttpResponseRedirect
从django.conf导入设置
进口稀土
类loginMiddelware:
def过程_请求(自我,请求):
如果请求.path!=settings.LOGIN\u路径和请求。user.is\u匿名():
if request.path.find('media')看看Matt Grayson的。它允许您使用自定义的LOGIN\u REQUIRED\u url\u EXCEPTIONS
设置定义一组不需要登录的URL 看看马特·格雷森的。它允许您使用自定义的LOGIN\u REQUIRED\u url\u EXCEPTIONS
设置定义一组不需要登录的URL 当然可以:
DIRECT_ACCESS = re.compile(r'^/media/.*\.(js|css|png|gif|jpg)$')
...
if DIRECT_ACCESS.match(url):
...
提示:如果您想确保您的regexp工作,请编写两个执行它的单元测试。这样,你就不会得到任何令人讨厌的惊喜。当然:
DIRECT_ACCESS = re.compile(r'^/media/.*\.(js|css|png|gif|jpg)$')
...
if DIRECT_ACCESS.match(url):
...
提示:如果您想确保您的regexp工作,请编写两个执行它的单元测试。这样,您就不会得到任何令人讨厌的惊喜。您不需要正则表达式:
if request.path.startswith('/path/to/your/media'):
#do something
我们应该做到这一点。您抱怨的是,如果请求路径包含:
/protected/secure/media/bla
您的实现将允许用户通过
因此,对字符串方法使用绝对路径就足以解决您的问题。您不需要正则表达式:
if request.path.startswith('/path/to/your/media'):
#do something
我们应该做到这一点。您抱怨的是,如果请求路径包含:
/protected/secure/media/bla
您的实现将允许用户通过
因此,对字符串方法startswith
使用绝对路径就足以解决您的问题