python - Django:基于类的 View 访问 URL 变量

标签 python django url django-class-based-views

我的 urls.py 有一个条目:

urlpatterns = [

    url(r'^results/(?P<query>).+', views.ResultsView.as_view(), name="results"),
]

与相应的基于类的 View 匹配:

class ResultsView(TemplateView):

    template_name = os.path.join(APPNAME, "results.html")

    def dispatch(self, request, *args, **kwargs):
        query = kwargs['query']
        print("HERE: " + str(json.dumps(kwargs, indent=1)))
        print(self.kwargs['query'])
        print(self.kwargs.get('query'))
        print(kwargs['query'])
        print(kwargs.get('query'))

        if query is None:
            return redirect('/')
        return super(ResultsView, self).dispatch(request, *args, **kwargs)

    def get_context_data(self, **kwargs):

        context = super(ResultsView, self).get_context_data(**kwargs)
        print("HERE: " + str(json.dumps(kwargs, indent=1)))
        print(self.kwargs['query'])
        print(self.kwargs.get('query'))
        print(kwargs['query'])
        print(kwargs.get('query'))
        ...

    # This is just here to test if 'query' is set 
    def get(self, request, query):
        print(query)

我正在尝试获取 urls.py 中设置的 query 变量的值。然而,在尝试了我在其他 SO 帖子中找到的各种解决方案之后(正如您从所有打印语句中看到的那样),没有任何效果。

我相当确定我的 urls.py 设置正确,因为请求解析到正确的页面(结果/),但所有打印字典的查询条目的尝试都返回空字符串,并且 json.dumps(kwargs, indent=1)) 打印:

HERE: {
 "query": ""
}

我做错了什么?

最佳答案

只需复制我的评论作为答案即可。您错过了 url 正则表达式中的模式部分。尝试将网址更改为:

url(r'^results/(?P<query>[\w.-]+)', views.ResultsView.as_view(), name="results")

关于python - Django:基于类的 View 访问 URL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168117/

相关文章:

django - 根据另一个字段的值在Django Admin中将字段设为只读

internet-explorer - IE url 长度限制是否适用于 "#"之后的内容?

ajax - 修改 AJAX 应用程序中的地址栏 URL 以匹配当前状态

macos - Applescript提取YouTube Livestream视频ID

python - django 中的动态 SQL 连接查询

python - 提取括号中的单词并将提取的单词存储到集合中

Python Telegram Bot : Prompt for another input

python - 使用 Python 2.7 在 Django 1.6 中实现 chartit - TypeError : 'NoneType' has no attribute __getitem__

python - 原始计算器的动态规划

css - 为什么 elastic beanstalk 不为 django 管理站点呈现 css?