如何在Django中为移动应用程序构建一个带有模板和rest api的网站

时间:2016-01-06 04:21:00

标签: django

我想用Django框架构建一个项目,它包括网站和移动应用程序,网站是基于Django模板构建的,移动应用程序需要休​​息api。我怎么能只用一个源代码副本呢?

换句话说,我可以创建一个项目,其中有几个django应用程序,它支持返回移动应用程序的渲染模板和json吗?

我知道我们可以在网站中使用Angular JS,然后使用Django-Rest-Framework访问网站和移动应用程序访问api。但我不知道Angular JS,我没时间学习它。

请帮忙。

3 个答案:

答案 0 :(得分:4)

如果您利用HTTP标头的强大功能,这很容易实现,特别是说" Content-Type"头 (HTTP 1.1 headers specification

我个人使用它的方式是这样的:

def my_view_name(request):

    if 'CONTENT_TYPE' in request.META and \
        request.META['CONTENT_TYPE'] == 'application/json':
            return HttpResponse(
                json.dumps({"foo":"bar"}), 
                content_type='application/json'
            )
    else:
        return render_to_response(
            'sometemplate.html', context
        )

上面的代码是django特有的。

它允许您根据客户端传入的内容控制服务器执行何种响应。它可以通过检查Content-Type标头来检测是否需要JSON响应。 只需确保您的移动应用在Content-Type标头设置为application/json

的情况下发出HTTP请求即可

希望这是你想要的。

答案 1 :(得分:0)

您可以在一个项目中完成。拥有相同的模型,但对网站和REST-api有不同的观点。

答案 2 :(得分:0)

您可以构建一个公共后端来为您的数据提供服务。

你可以在没有Django-rest-Framework的情况下做到这一点(不必使用angular)。 你只是打电话给后端的网址。

例如,。假设后端代码运行在127.0.0.1/8000,你需要获取用户的详细信息,你只需要从移动应用程序或任何其他前端调用url 127.0.0.1:8000/get_user_details/。

请养成形成/安排用不同功能编写的数据的习惯,以便移动应用程序和网站都能重复使用。(请参阅下文)

###  For browser website written in DJANGO (served in template by django):
def user_details_page(request):
    get_user_details(someid)    #### returns json of user details
    render in template

#### And for the mobile App you could use **get_user_details(someid)** just to get json data.

def get_user_details(someid):
   ###do watever
   return json ## of user details

您还可以使用Django Rest Framework(无需使用角度),它可以为您提供很多稳定性。

或者您可以在Django Framework中设置一个全新的后端来为移动应用程序提供数据。