2017-01-07 8 views
-1

get_absolute_pathを設定しようとしています。ユーザーの詳細を表示するために、profile.htmlページの正規表現のURLを定義しようとしています。DJANGO - NoReverseMatch at/

models.py(アプリユーザー):

from django.core.validators import RegexValidator 
from django.core.urlresolvers import reverse 
from django.db import models 


# Create your models here. 


class UserGroup(models.Model): 
    GROUP_CHOICE = (
     ('Administrator JAM', 'Administrator JAM'), 
     ('Supervisors', 'Supervisors'), 
     ('Agents', 'Agents'), 
    ) 

    name = models.CharField('User Group Name', max_length=50, unique=True, choices=GROUP_CHOICE) 
    slug = models.SlugField('Group ID', unique=True) 

    def __str__(self): 
     return self.name 

    class Meta: 
     verbose_name = "User's Group" 
     verbose_name_plural = "User's Groups" 
     ordering = ['name'] # ordenando por nome e depois por ultima modificação 


class User(models.Model): 
    name = models.CharField('Name', max_length=100) 
    username_regex = RegexValidator(regex=r'^[\w_-]{5,50}$', message='The username must be consist only of letters and numbers. From 5 up to 15 characters allowed.') 
    username = models.CharField('Username', validators=[username_regex], max_length=50, unique=True) 
    slug = models.SlugField('User ID', max_length=50) 
    user_group = models.ForeignKey('users.UserGroup', verbose_name='User Group') 
    is_active = models.BooleanField('Active', default=True, choices=((True, 'Active'), (False, 'Deactive'))) 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('profile_agent', kwargs={'slug': self.slug}) 

    class Meta: 
     verbose_name = 'User' 
     verbose_name_plural = 'Users' 
     ordering = ['name', 'user_group', 'is_active'] 

urls.py(ルートから):

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', views.index, name='index'), 
    url(r'^edit_profile/$', views.edit_profile, name="edit_profile"), 
    url(r'^inbox/$', views.inbox, name="inbox"), 
    url(r'^profile/', include('users.urls', namespace='users')) 
] 

urls.py(アプリユーザーから):

from . import views 
from django.conf.urls import url 

urlpatterns = [ 
    url(r'^(?P<slug>[-\w]+)/$', views.profile_agent, name='profile_agent'), 
] 

どこで私はaboslute URLを取得しようとしています、それはからです。index.html

<!-- Sidebar user nav --> 
<nav class="sidebar-user__nav"> 
    <ul class="sidebar__nav"> 
     <li> 
      <a href="{% url agent.get_absolute_url %}"><i class="fa fa-user"></i> Profile</a> 
     </li> 
     <li> 
      <a href="{% url 'edit_profile' %}"><i class="fa fa-edit"></i> Edit Profile</a> 
     </li> 
     <li> 
      <a href="{% url 'inbox' %}"><i class="fa fa-envelope-o"></i> Inbox</a> 
     </li> 
     <li> 
      <a href="#"><i class="fa fa-sign-out"></i> Logout</a> 
     </li> 
    </ul> 
</nav> 

Error Page Django

私がページにアクセスしよう: enter image description here

誰もが、私はエラーを取得していますので、いくつかのアイデアを持っていますか?

すべてのことを前に、あなたの注目に感謝します。

答えて

2

reverseに電話するときは、usersという名前空間を含める必要があります。

return reverse('users:profile_agent', kwargs={'slug': self.slug}) 

テンプレートでは、get_absolute_urlを使用するときにURLタグを使用する必要はありません。 URLパターンで

{{ agent.get_absolute_url }} 

、あなたはハイフン[\-\w]+をエスケープする、または終了[\w-]+にそれを移動する必要があります。

+0

うん!あなたはまったく正しい。私の気晴らし.... – AndreFelipeCL