如何制作python正则表达式?

如何制作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

我正在为Django开发loginMiddleware类。此中间件类必须在未登录时将用户发送到登录页。但也有一些例外

因为我运行内置的django服务器,所以我必须创建一个媒体url。但要知道,当登录页面加载javascript文件时,javascript文件就是登录页面,因为用户没有登录。因此,我发表了一项声明:

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
使用绝对路径就足以解决您的问题