如何将两个URL映射到一个视图? [英] How to map two urls to one view?

查看:18
本文介绍了如何将两个URL映射到一个视图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的类,来自Models.py:

class Person(models.Model):
    name = models.CharField(max_length=64)
    persnr = models.AutoField(primary_key=True)

这是我的看法:

def show_person(request, persnr):
    pers = get_object_or_404(Person, pk=persnr)
    context={'pers':pers}
    return render(request, 'company/person.html', context)

这是我的URL:

url(r'^show_person/(?P<persnr>d+)', "company.views.show_person", name='show_person'),

如何使用这两个URL访问相同的视图(Show_Person):

server/show_person/(persnr)

server/show_person/(name)

推荐答案

略有不同的方法是接受两个单独的参数,一个用于PK,一个用于名称:

url(r'^show_person/(?P<persnr>d+)', "company.views.show_person", name='show_person'),
url(r'^show_person/(?P<name>w+)', "company.views.show_person", name='show_person'),

def show_person(request, persnr=None, name=None):
    if persnr is not None:
        pers = get_object_or_404(Person, pk=persnr)
    elif name is not None:
        pers = get_object_or_404(Person, name=name)
    else:
        raise Http404

这篇关于如何将两个URL映射到一个视图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆