我正在为我的项目使用 Django URL 模式。我正在发送一个包含特殊字符和数字的字符串。在 python 函数中读取字符串时,它不会在函数中获取 ? 。
html
{% for user_name in userSet%}
<a class="dropdown-item" href="/slackNotification/{{user_name}}/{{data.question}}">{{ user_name }}</a>
{% endfor %}
网址
path('slackNotification/<str:slack_user_name>/<str:question>',views.slackNotification)
当我通过 URL 获取所有详细信息时,无论我在 python 代码中收到什么字符串,它都不会包含 ? 标记,即使我的输入包含特殊字符和数字。
输入:你叫什么名字? 输出:你叫什么名字(问号不可用;)
问题 我已经尝试过:
re_path(r'^slackNotification/<str:slack_user_name>/(?P<question>\w+)',views.slackNotification)
输出 当前路径与任何 url 都不匹配
我想知道满足我的要求的确切正则表达式??
最佳答案
您的第一个path()
只要 URL 中的每个路径组件都是 URL 编码的,就是正确的。 ?
是 URL 中的特殊字符:它表示路径的结尾,其后面的任何内容都被解释为查询参数:
http://www.example.com/apples?color=green
路径为http://www.example.com/apples
和查询参数color
值(value)green
.
因此,如果您想要字符串“What is your name?”要包含在您的路径中,您需要确保它是 URL 编码的:What%20is%20your%20name%3F
哪里%3F
是 URL 编码的 ?
和%20
用于<space>
.
关于python - 如何在django中编写re_path url来读取特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264783/