从Django数据库条目生成html页面

时间:2015-05-22 08:32:13

标签: django django-templates django-views

我正在尝试获取网址映射以遵循此示例

/user/user-name/list/list-name-goes-here

我创建了这个正则表达式(不确定它是否正确)

url(r'^user/(\w+)/list/(?P<listname>\w+)/$', mylistpage, name='lists'),

因此,用户目前可以插入一系列列表,并将其打印到主要个人资料页面上。我希望他们点击列表并让它显示一个不同的html页面,列表名称作为标题。 列表可以有空格,所以我需要以某种方式进行重击。

我目前收到此错误:

mylistpage() takes exactly 3 arguments (2 given)

VIEW

def mylistpage(request, username, listname):

    context = RequestContext(request)

    if username == request.user.username:

        if request.user.is_authenticated():

            user = User.objects.get(username=username)

            listname = request.user.newlist_set.filter(list_name__startswirth=listname)

    return render_to_response('listview.html', {'lista': listname}, context)

MODEL

class newlist(models.Model):
    user = models.ForeignKey(User)
    list_name = models.CharField(max_length = 100,)
    picture = models.ImageField(upload_to='profiles/', default = "/media/profiles/default.jpg")

    def __str__(self):
        return self.list_name

2 个答案:

答案 0 :(得分:2)

您需要在正则表达式中命名两个参数:

url(r'^user/(?P<username>\w+)/list/(?P<listname>\w+)/$', mylistpage, name='lists'),

有关Django documentation: URL Dispatcher: Named groups的详情。

更新:回复评论,如果没有usernamelistname则重定向到404,这将在视图中处理。例如:

User.objects.get_object_or_404(username=username)

from django.http import Http404

if not listname:
    raise Http404("blah blah..")

答案 1 :(得分:1)

您忘记将用户名传递给视图:

url(r'^user/(?P<username>\w+)/list/(?P<listname>\w+)/$', mylistpage, name='lists'),