从 Django 数据库条目生成 html 页

Generating html pages off Django database entries

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

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

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

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

因此,用户目前可以插入一系列列表,并打印到他们的主要个​​人资料页面上。我希望他们单击​​列表并让它显示另一个 html 页面,列表名称为 header。 列表可以有空格,所以我需要以某种方式进行修改。

我目前收到此错误:

mylistpage() takes exactly 3 arguments (2 given)

查看

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)

型号

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

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

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..")

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

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