2016-07-20 20 views
0

私はDjangoのビルドされた自動生成IDではなくUUIDを使用するモデル 'Post'を作成しました。 'Post'モデルでは、私はdef get_absolute_urlを定義して、それをテンプレートに保持することができます。取引のページを取得しようとしているときにエラーが発生しています:NoReverseMatch at/deal/ 'detail' for arguments '(UUID(' 086d177f-9071-4548-b5db-1d329078853e ')、)'とキーワード引数 '{}'が見つかりません。 1つのパターンが試されました:['deal /(?P \ d +)/ $']。私はこれを解決するために私を助けてくれてありがとう。Python:NoReverseMatchエラー:引数 '(UUID)'およびキーワード引数 '{}'が見つからない場合、 'detail'を逆にします。 1つのパターンが試されました:Djangoの['']

は、ここに私のコードです:

Models.py:

class Post(models.Model): 
    post_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1) 
    from1 = models.CharField(max_length=20) 

    def __str__(self): 
     return self.post_id 

    def get_absolute_url(self): 
     return reverse("detail", args=(self.post_id)) 

urls.py:

url(r'^deal/$', views.deal, name='deal'), 
url(r'^deal/(?P<post_id>\d+)/$', views.post_detail, name='detail'), 

Views.py:

def deal(request): 
    queryset_list = Post.objects.active() #.order_by("-timestamp") 
    if request.user.is_staff or request.user.is_superuser: 
     queryset_list = Post.objects.all() 
    context = { 
     "object_list": queryset_list, 
     "post_id": "List", 
    } 
    return render(request, 'before_login/deal.html', context) 

def post_detail(request, post_id=None): 
    instance = get_object_or_404(Post, post_id=post_id) 
    if instance.date > timezone.now().date(): 
     if not request.user.is_staff or not request.user.is_superuser: 
      raise Http404 
    share_string = quote_plus(instance.Material_Type) 
    context = { 
     "from1": instance.from1, 
     "instance": instance, 
     "share_string": share_string 
    } 
    return render(request, "loggedin_load/post_detail.html", context) 

deal.html:

{% for obj in object_list %} 
    <tr> 
     <td scope="row">{{obj.post_id}}</td> 
     <td> <a href='{{ obj.get_absolute_url }}'>{{ obj.from1 }}</a><br/></td> 
     <td>{{obj.user}}</td> 
    </tr> 
{% endfor %} 
+0

あなたは '{%のURLの%}を使用している、あなたの取引のテンプレートであります'どこかのタグ。投稿する必要があります。 –

+3

'get_absolute_url()'にカンマがありません: 'args =(self.post_id、)'。 – knbk

+0

私のテンプレートコードを更新しました。 {%url%}はどこにも使用していません。 – sumanth

答えて

3

あなたのUUIDには文字とハイフンが含まれていますが、あなたの正規表現は数字(\d+)と一致しています。あなたが文字とハイフンをキャプチャするためにあなたの正規表現を変更する必要があります。

url(r'^deal/(?P<post_id>[\w-]+)/$', views.post_detail, name='detail'), 
+0

ありがとうBruh !! – sumanth

0

UUIDのために、ここでの正規表現

url(r'^deal/(?P<pk>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/$', views.post_detail, name='detail'),

関連する問題

 関連する問題