我在urls.py中有这个。我正在使用paginator。如果我得到一些UsuarioName,它会回复UsuarioName配置文件和page = 1.但我可以看到以下页面。我已经关注了Django paginator doc。
url(r'^(?P<UsuarioName>.+)/$', "actividades.views.ShowUserPage"),
url(r'^(?P<UsuarioName>.+)/?(?P<page>.+)/?$', "actividades.views.ShowUserPage"),
views.py,如果我写def ..(... UsuarioName,page),那就错了,因为第一个url条目没有参数。
def ShowUserPage(request, UsuarioName, page):
UsuarioModel = UserProfile.objects.get(user__username=UsuarioName)
UserPage = '<div class="userpage">'
UserPage += '<strong>' + UsuarioModel.titulo + '</strong><br>'
UserPage += UsuarioModel.user.get_username() + "<br>"
UserPage += UsuarioModel.descripcion + "<br>"
UserPage += '</div>'
UserPage += '<strong>Actividades de usuario</strong>'
UserActList = UserActivities.objects.filter(user=UsuarioModel).values('actividad','fecha_alta')
paginator = Paginator(UserActList, 2)
page = 1
try:
ActPage = paginator.page(page)
except PageNotAnInteger:
ActPage = paginator.page(1)
except EmptyPage:
ActPage = paginator.page(1)
#print ActPage.object_list[0]['actividad']
for ActividadActual in ActPage:
UserAct = Actividad.objects.get(id_evento=ActividadActual['actividad'])
UserPage += '<div class="activity">'
UserPage += '<strong>Actividad: ' + UserAct.titulo + '</strong><br>'
UserPage += 'Fecha actividad: ' + UserAct.fecha.strftime("%d-%m-%y") + '<br>'
UserPage += 'Fecha alta: ' + ActividadActual['fecha_alta'].strftime("%d-%m-%y") + '<br>'
UserPage += '</div>'
return HttpResponse(UserPage)
我该如何解决?我知道我可以拆分网址,但我不太喜欢它..
答案 0 :(得分:0)
也许你应该这样做:
url(r'^(?P<UsuarioName>.+)/(?P<page>\d+)/?$', "actividades.views.ShowUserPage"),
url(r'^(?P<UsuarioName>.+)/$', "actividades.views.ShowUserPage"),
我更改了网址的顺序,因此/ me / 3不会先匹配(?P + +)。我还为页面参数设置了一个数字类型,因为它总是一个数字,所以没有理由去捕捉除了之外的其他内容。
然后,你应该尝试:
def ShowUserPage(request, UsuarioName, page=1):
它应该允许没有页面的查询在没有页面参数的情况下调用此函数(将其默认为1)。
我没有尝试过这些,所以如果它没有帮助,我会深入研究它。
答案 1 :(得分:0)
我想我明白了。
默认页面= 1.始终, 下一次,将有一个获取以下页面的链接。我可以把它作为POST参数吗?¿?¿?