1

#character を渡すことはできませんが、django URL を介してデータを渡すために使用していましたurls.py。パターンを次のように使用しています。

url(r'^pass/(?P<sentence>[\w|\W]*)/$',pass) 

私もこれらのパターンで試しました

url(r'^pass/(?P<sentence>[a-zA-Z0-9-/:-?@#{-~!^_\'\[\]*]*)/$',pass) 

前もって感謝します。

4

2 に答える 2

3

「#」文字は、URL 内のインライン アンカー (同じページ内のリンク) をマークするため、ブラウザーはそれを Django に送信しません。

たとえば、URL が/something/pass/#test/something-else/ブラウザの場合、サーバーにのみ送信され/something/pass/ます。代わりに試すことができ/something/pass/%23test/something-else/ます.23は16進数のASCIIコードです#-きれいではありません(醜いので、代わりにget変数として渡すだけです)。

Django 側でできることは何もありません - ルートを設計するときに、URL パスに特別な意味を持つ文字を避ける方がよいでしょう - もちろんそれは好みの問題ですが、URL パスで渡される文字列は "おかしなキャラクターを削除するために「だらだら」にしました。

于 2013-10-15T09:03:02.213 に答える
0

ブラウザは、URL フラグメント部分 (「#」で終わる) をサーバーに送信しません。まずデータを base64 に変換してから、url 経由でデータを渡してみませんか。

RFC 1808 (Relative Uniform Resource Locators) : フラグメント識別子 (およびその前にある「#」) は URL の一部とは見なされないことに注意してください。ただし、URL と同じ文字列コンテキスト内で一般的に使用されるため、パーサーはフラグメントが存在する場合にフラグメントを認識し、解析プロセスの一部としてそれを脇に置くことができなければなりません。

于 2013-10-15T09:02:42.817 に答える