首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有会话身份验证的RESTful模板中实现Django中的Vue Django调用

在具有会话身份验证的RESTful模板中实现Django中的Vue Django调用
EN

Stack Overflow用户
提问于 2020-03-29 19:05:06
回答 1查看 91关注 0票数 0

我有一个Django项目,每当我想要更新内容时,都需要刷新页面。目前它使用内置的基于Django类的视图,而视图又使用模板。

我想开始实现一些javascript调用,用新数据刷新表格/表单/模式窗口,主要是为了响应按钮单击。我正在尝试使用Vue来实现这一点,我已经创建了一个Django REST框架后端来促进这一点。

我得到了一个简单的'Hello world‘vue类,其中的数据被硬编码到Vue类的数据字段中。不过,我似乎不能跳到从API获取数据。我收到未经授权的响应。我使用vue-resource进行HTTP API调用。

我有一些单元测试,其中我使用self.client.get(‘API / APITestCase’)从DRF路径调用api,它们可以像预期的那样工作(当没有经过身份验证的用户附加到请求时未经授权,如果有则授权)。

我已经调试了DRF权限类,以查看请求被拒绝的原因,这是因为没有经过身份验证的用户附加到请求。

我已经在DEFAULT_AUTHENTICATION_CLASSES的设置中添加了SessionAuthentication。

我的问题是,如何将经过身份验证的用户添加到请求中,以便在从我的webapp中调用Vue方法时,API请求将被授权?

我不确定这是否会使问题变得复杂,但我在Django中使用了一个自定义用户模型进行身份验证。

我希望通过在我的网站上实现一些Vue控件来开始,例如提到的表格和表单。我不想把它变成一个单页面的应用。我想继续使用Django视图进行用户身份验证。

我的Vue代码看起来像这样;

代码语言:javascript
复制
new Vue({
    delimiters: ['${', '}$'],
    el: '.events-table',
    data: {
        message: 'Hello Vue!',
        demo: [
            { id: 5 },
            { id: 2 },
            { id: 3 },
        ],
        events: [],
    },
    http: {
        root: 'http://localhost:8000',
    },
    methods: {
        getEvents: function () {
            this.$http.get('api/eventlog/events/?format=json').then(
                function (data, status, request) {
                    if (status == 200) {
                        this.events = data.body.results;
                    }
                }
            )
        }
    },
    mounted: function () {
        this.getEvents();
    }
})
EN

回答 1

Stack Overflow用户

发布于 2020-03-30 03:15:44

我像这样更改了http属性。

代码语言:javascript
复制
http: {
    root: window.location.origin,
},

现在,它似乎认识到请求来自经过身份验证的会话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60913276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档