【发布时间】:2021-05-21 13:43:26
【问题描述】:
我在我的 django 应用程序中使用路径转换器,如下所示:
# urls.py
from . import views
from django.urls import path
urlpatterns = [
path('articles/<str:collection>', views.ArticleView),
]
# views.py
@login_required
def ArticleView(request, collection):
print(collection)
if collection == "None":
articles_query = ArticleModel.objects.all()
...
这在开发中可以正常工作,因为 url 很烂:http://localhost:8000/articles/My Collection,它被编码为 http://localhost:8000/articles/My%20Collection,并在 ArticleView 中正确解码。但是,在开发中,我必须像这样编辑视图才能使其工作:
# views.py
import urllib.parse
@login_required
def ArticleView(request, collection):
collection = urllib.parse.unquote(collection)
print(collection)
if collection == "None":
articles_query = ArticleModel.objects.all()
...
否则,print(collection) 会显示 My%20Collection,而其余视图中的整个逻辑将失败。
requirements.txt
asgiref==3.2.10
Django==3.1.1
django-crispy-forms==1.9.2
django-floppyforms==1.9.0
django-widget-tweaks==1.4.8
lxml==4.5.2
Pillow==7.2.0
python-pptx==0.6.18
pytz==2020.1
sqlparse==0.3.1
XlsxWriter==1.3.3
pymysql
我在这里做错了什么? 提前致谢!
【问题讨论】:
-
“这也发生在管理界面中。”你能更具体地说明那里发生的事情吗?
-
我错了,我在管理界面中遇到的问题无关,我已经相应地编辑了问题。
标签: django production url-parameters urlparse