我正在尝试获取网址映射以遵循此示例
/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)
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
答案 0 :(得分:2)
您需要在正则表达式中命名两个参数:
url(r'^user/(?P<username>\w+)/list/(?P<listname>\w+)/$', mylistpage, name='lists'),
有关Django documentation: URL Dispatcher: Named groups的详情。
更新:回复评论,如果没有username
或listname
则重定向到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'),