将django中的特殊字符传递给views.py

时间:2015-03-19 12:05:40

标签: python regex special-characters django-urls

我正在尝试将字符串从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;所有字符串都被传递。

2 个答案:

答案 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请求导入数据。