1

prepend_urls()Django-tastypieの機能を使用して同じ ResourceModel にアクセスする 2 つの異なる方法を追加しようとしていますが、2 番目の URL は機能しません。

ここに私が持っているコードがあります:

class UserResource(ModelResource):
    class Meta:
        ...
        my_id_uri_name = 'my_id'
        name_uri_name = 'name'

    def prepend_urls(self):
        return [
            url(
                r"^(?P<resource_name>%s)/(?P<my_id>[\w\d_.-]+)/$"
                % self._meta.resource_name, self.wrap_view('dispatch_detail'),
                name="api_dispatch_detail_my_id"),
            url(
                r"^(?P<resource_name>%s)/(?P<name>[\w\d_.-]+)/$"
                % self._meta.resource_name, self.wrap_view('dispatch_detail'),
                name="api_dispatch_detail_name"),
        ]

ここに追加の URL を追加するための役立つリソースが見つかりません。些細なことを見逃していますか?

4

2 に答える 2

2

正規表現に関する Zeograd の提案のおかげで、これを解決しました。

次のように、最初の {ID} 式を整数に、2 番目の式を文字列に一致するように変更しました。

def prepend_urls(self):
        return [
            url(
                r"^(?P<resource_name>%s)/(?P<my_id>\d+)/$"
                % self._meta.resource_name, self.wrap_view('dispatch_detail'),
                name="api_dispatch_detail_id"),
            url(
                r"^(?P<resource_name>%s)/(?P<name>[\w\d_.-]+)/$"
                % self._meta.resource_name, self.wrap_view('dispatch_detail'),
                name="api_dispatch_detail_name"),
        ]
于 2013-11-07T13:18:33.287 に答える
0

2 つの正規表現は同じ入力 URL と一致しています。順番に処理されるため、2 番目の正規表現は一致しません。次のように、中間 URL フラグメントを使用して 2 を区別することができます。

r"^(?P<resource_name>%s)/by-name/(?P<name>[\w\d_.-]+)/$"

第二に

于 2013-11-07T11:53:48.100 に答える