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 并将其传递给我的 Boat 函数,但我不确定出了什么问题

<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',
),

我的观点.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})

感谢你们对我的帮助 :]

我的更多观点.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})

我的模型.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 回答