2

私は、ペットのユーザーが自分のペットについてボードを作成し、ボードに写真を表示できるシンプルなアプリに取り組んでいます。

私は、ユーザーが自分のボードをクリックして、自分のペットの写真をすべて表示する自分のボードにリダイレクトできる機能を作成しようとしています。

ここに画像の説明を入力してください

ユーザーをボードにリダイレクトするようにテンプレートを構成しようとすると、エラーが発生します。

Reverse for 'Boat' with arguments '('',)' and keyword arguments '{}' not found.
Django Version: 1.4.3 
Exception Type: NoReverseMatch 
Exception Value: Reverse for 'Boat' with arguments '('',)' and keyword arguments '{}' not found. 

Error during template rendering
In template C:\o\mysite\pet\templates\edit.html, error at line 14
13     {% for b in board %}         

14     <li><a href ="{% url world:Boat animal.id %}">{{ b.name }}</li>

ここに画像の説明を入力してください

ユーザーがボードをクリックすると、問題はここにあると思います。私のURLconfはanimal.idをキャプチャし、それを私のボート関数に渡しますが、何がうまくいかなかったのかわかりません

<li><a href ="{% url world:Boat animal.id %}">{{ b.name }}</li>

私のedit.html

<h4>My Boards</h4>
{% if board %} 
<ul>  
    {% for b in board %}         
    <li><a href ="{% url world:Boat animal.id %}">{{ b.name }}</li>
    {% endfor %}
</ul>
{% endif %}

私のメインURLconf

urlpatterns = patterns('',
    url(
        r'^admin/', 
        include(admin.site.urls)
    ),
    url(
        r'^',
        include('pet.urls',
            namespace = 'world')
    ),

ペットアプリのURLconfの一部

url(
    r'^(?P<animal_id>\d+)/$',
    'pet.views.Boat',
    name = 'Boat',
),

私のviews.pyの私の部分

def Profile(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))

    if request.method == 'POST':
        form = PersonForm(request.POST, request.FILES)
        if form.is_valid():
            person = Person.objects.get(user=request.user)
            person.image = form.cleaned_data['image']
            person.name = form.cleaned_data['name']
            person.save() 
    return render(request,'profile.html',{'form': PersonForm()})

def Boat(request ,animal_id):
    if not request.user.is_authenticated():
            return HttpResponseRedirect(reverse('world:LoginRequest'))

    picture = Picture.objects.filter(board=animal_id)
    return render(request,'boat.html',{'picture':picture})

助けてくれてありがとう :]

私のviews.pyの詳細

def Display(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))
    board = Board.objects.filter(user=request.user)
    person = Person.objects.get(user=request.user)
    return render(request,'edit.html',{'board':board ,'person':person})

私のmodels.py

class Person(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    image = models.FileField(upload_to="images/",blank=True,null=True)
    following = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True, null=True)

    def __unicode__(self):
        return self.name

class Board(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    def __unicode__(self):
        return self.name
4

2 に答える 2

2

animal.idの価値はありません

{% if board %} 
<ul>  
    {% for b in board %}         
    <li><a href ="{% url world:Boat b.id %}">{{ b.name }}</li>
    {% endfor %}
</ul>
{% endif %}
于 2013-03-12T09:59:19.340 に答える
1

テンプレート内で、値animal.idが解決されていないようです。

変数が空であるため、URL正規表現^(?P<animal_id>\d+)/$は一致しません。正規表現は数字を指定し、空の文字列を渡します。

解決されない理由については、「edit.html」をレンダリングしているビューを確認する必要があります。

于 2013-03-10T05:44:30.343 に答える