7

次のようなURLで渡されるパラメータとして電子メールを受け入れるビューを書いています

url(r'^admin/detail_consultant_service/((?P<consultant_id>\[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}))/$',
            'admin_tool.views.consultant_service_detail', name="consultant_service_detail"),

そして、これが私のテンプレートの内容です

{% for consultant in list_consultants %}
    <li>
        {{consultant.id}}
        <a href="{% url consultant_service_detail consultant.id %}">{{ consultant|disp_info }}</a> <br/>
    </li>
{% endfor %}

しかし、URLにアクセスするとエラーが発生します

everse for 'consultant_service_detail' with arguments '(u'rahul183@gmail.com',)' and keyword arguments '{}' not found.

私が正規表現で間違っていることを助けてください。なぜこのメールを受け入れないのですか?これは問題ですか、それとも何か他のことですか?

4

2 に答える 2

17

キーワード引数の代わりに位置引数を渡しています。以下が機能するはずです。

{% url consultant_service_detail consultant_id=consultant.id %}

また、Django>=1.5 を使用している場合はurl、次のように使用する必要があります。

{% url 'consultant_service_detail' consultant_id=consultant.id %}

そして、これは新しい動作であるため、実際に (推奨されます) Django の以前のバージョン (>=1.3 だと思います) で次のように使用できます。

{% load url from future %}
{% url 'view_name' ... %}

ここによると、正規表現は問題ないと思うので、問題は定義自体にある可能性が最も高いです。これを試して:

url(r'^admin/detail_consultant_service/(?P<consultant_id>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$',
    'admin_tool.views.consultant_service_detail',
    name="consultant_service_detail"),

したがって、有効な URL は次のようになります。

foo.com/admin/detail_consultant_service/email.address@here.com/
于 2013-07-02T15:27:20.590 に答える