django中间件如何设置含有参数的路径例如/wiki/categories/<str:category>/page/
时间: 2023-12-09 16:03:33 浏览: 131
可以通过在中间件类的构造函数中接收参数来实现。例如,假设你有一个中间件类`MyMiddleware`,你想要在`/wiki/categories/<str:category>/page/`路径下使用它,你可以这样实现:
```python
class MyMiddleware:
def __init__(self, get_response, category):
self.get_response = get_response
self.category = category
# ...
def __call__(self, request):
# ...
```
然后在`settings.py`中指定中间件和对应的参数:
```python
MIDDLEWARE = [
# ...
'path.to.MyMiddleware': {
'category': '<str:category>',
},
# ...
]
```
这样在请求`/wiki/categories/some_category/page/`时,Django会自动将`<str:category>`解析为`some_category`,并将其传递给`MyMiddleware`的构造函数。
相关问题
django的中间件 允许访问/wiki/categories/<str:category>/page/
要允许访问 `/wiki/categories/<str:category>/page/`,可以编写一个 Django 中间件来实现。下面是一个简单的示例中间件:
```python
from django.http import Http404
class WikiMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 获取请求路径
path = request.path_info
# 如果请求路径匹配 /wiki/categories/<str:category>/page/
if path.startswith('/wiki/categories/') and '/page/' in path:
# 允许访问
return self.get_response(request)
# 否则抛出 404 异常
raise Http404('Page not found')
```
将上述代码保存为一个 Python 文件,如 `wiki_middleware.py`,然后将其添加到 Django 项目的 `MIDDLEWARE` 设置中:
```python
MIDDLEWARE = [
# ...
'path.to.WikiMiddleware',
]
```
这样,访问 `/wiki/categories/<str:category>/page/` 将会被允许,而其他路径将会被拒绝访问。