我正在尝试将字符串从Html页面传递到views.py
该字符串包含一些特殊字符,字符串:
Clarithromycin 500 MG Extended Release Tablet;http://purl.bioontology.org/ontology/RXNORM/;259543;9/4/2010;2;d;1 bid;Prescription;http://smartplatforms.org/terms/codes/MedicationProvenance#;prescription ;1;{tablet} ;7/7/2014;2007-10-03 03:00:00+03;
我发现问题出在regex表达式的urls.py中。字符串不会在特殊字符'#'
之后传递urls.py:
(r'^bulkimport/importMedications/(?P<stringP>.+)', importMedications),
我也试过
(r'^bulkimport/importMedications/(?P<stringP>[\w\+%_&\# ].+)', importMedications),
并且传递的字符串是:
Clarithromycin 500 MG Extended Release Tablet;http:/purl.bioontology.org/ontology/RXNORM/;259543;9/4/2010;2;d;1 bid;Prescription;http:/smartplatforms.org/terms/codes/MedicationProvenance
如果我删除字符&#39;#&#39;所有字符串都被传递。
答案 0 :(得分:3)
我和GET有同样的问题。我无法传递'+'字符。我做了以下事情:
q_string = dict(x.split('=')
for x in request.META['QUERY_STRING'].split('&')
)
然后我用q_string代替request.GET。
答案 1 :(得分:0)
哈希标记#
是网址中的保留字符,它引入了fragment identifier。
要在网址中使用它,您必须percent escape为%23
。您可以使用urllib.quote来执行此操作。
但是,如果可能的话,我强烈建议您使用POST请求导入数据。