小编dec*_*yte的帖子

Django Rest Framework:多次调用`get_serializer_class`,请求方法的值不正确

在访问可浏览的API时ModelViewSet,使用a ,get_serializer_class对于单个请求多次调用是否正常?那个self.method.request电话之间的变化值是多少?

我创建了一个小测试项目来显示行为.在project/example/views.py那里ThingViewSet有一个自定义get_serializer_class,它打印当前的请求方法.

如果启动服务器并导航到http://127.0.0.1:8000/things/1/,输出将如下所示:

./manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
May 19, 2015 - 08:51:34
Django version 1.8.1, using settings 'project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Method is: GET
Method is: PUT
Method is: PATCH
Method is: PUT
[19/May/2015 08:51:40]"GET /things/1/ HTTP/1.1" 200 11679
Run Code Online (Sandbox Code Playgroud)

显然,get_serializer_class被称为4倍,具有不同值(GET,PUT,PATCH, …

python django django-rest-framework

10
推荐指数
1
解决办法
1446
查看次数

实体框架,Code First建模和循环引用

我现在花了几天时间,试图解决这个问题.在制作一个简单的项目来举例说明我的问题时,我偶然发现了一个可能的解决方案.所以,这是一个双重问题.

但首先,一些背景信息:

我刚开始使用Entity Framework 4.1(EF)和Code First为我的ASP.NET MVC项目创建模型.我需要一些类似的模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TestApp.Models
{
    public class Family
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Father> Fathers { get; set; }
        public virtual ICollection<Mother> Mothers { get; set; }
    }

    public class Mother
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int FamilyID { get; set; }

        public virtual …
Run Code Online (Sandbox Code Playgroud)

c# modeling code-first entity-framework-4.1

8
推荐指数
1
解决办法
3396
查看次数

CSRF和CORS与Django(REST框架)

我们正在将我们的前端转移到一个单独的项目(Django之外).这是一个Javascript单页面应用程序.

其中一个原因是让我们的前端开发人员更容易完成他们的工作,而不必在本地运行整个项目 - 包括API.相反,我们希望他们能够与我们设置的测试API进行通信.

我们已经设法解决了大部分CORS/CSRF问题.但是现在我们遇到了一些我无法在任何地方找到解决方案的东西,尽管阅读了大量文档和SO答案.

前台和API是从不同的域(在开发过程中提供服务localhost和test-api.example.com).到目前为止,虽然从同一个域提供服务,但前端已经能够从csrftokenAPI(Django)设置的cookie中获取CSRF令牌.但是,当从不同的域提供服务时,frontend(localhost)无法访问API(api-test.example.com)的cookie .

我正在试图找到解决这个问题的方法,以某种方式将CSRF令牌传递给前端.Django文档建议X-CSRFToken为AJAX请求设置自定义标头.如果我们在每个响应中同样为CSRF令牌提供标头并且(通过Access-Control-Expose-Headers)允许前端读取此标头,我们是否会破坏CSRF保护?

鉴于我们已经为API正确设置了CORS(即只允许某些域对API进行跨域请求),第三方站点上的JS应该无法读取此响应头,因此无法做出妥协AJAX请求我们的用户背后,对吧?还是我错过了一些重要的事情?

还是有另一种更好的方法来实现我们想要的东西吗?

javascript django csrf cors django-rest-framework

6
推荐指数
1
解决办法
895
查看次数