我该如何在Django URLs中实现这个?(.json, .xml)

2 投票
6 回答
5725 浏览
提问于 2025-04-15 21:29

假设这是我的网址路由:

(r'^test/?$','hello.life.views.test'),

我该怎么做才能让用户在网址后面加上 .json 或 .xml,并且把这个信息传递给我的 views.test,这样我就知道要生成 json 格式或 xml 格式的数据呢?

6 个回答

0

把xml或json作为参数传递。你可以在网址中这样获取它(r'^test/(?P < doc_type > [^/]+)$','hello.life.views.test'),

0

我为我的API选择了一个默认格式(json)。如果最终的开发者想使用其他格式(比如yaml、xml等),我允许他们通过GET参数来发送这个格式的请求:

http://api.mysite.com/getinfo/?format=xml

def get_info_view(request):
    format = request.GET.get(format, None)
    if format:
        # handle alternate (non-json) format
    return json_object
8

补充一下@ziang的回答,如果你真的想模拟文件扩展名,可以这样写正则表达式。r'^test\.(?P<extension>(json)|(xml))$'

另外,我想说,把期望的返回内容类型作为一个参数提供,确实更符合RESTful的设计原则。

撰写回答