Не могу использовать vue. js из django - PullRequest
1 голос
/ 09 января 2020

Я ввел vuejs с помощью веб-пакета в django, но я не могу использовать vue экземпляров из django шаблонов.

Если посмотреть на chrome devtool, то js загружен правильно, но показывает {{message}}.

Следующее сообщение выводится на консоль chrome devtool.

TypeError: undefined is not an object (evaluating 'hasOwnProperty.call (it, key)')

ReferenceError: Can't find variable: Vue

Это мой код.

main.js

import Vue from 'vue'
import App from './App.vue'
import vuetify from '@/plugins/vuetify' // path to vuetify export

window.Vue = require('vue');
Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  vuetify,
}).$mount('#app')

html

{% load render_bundle from webpack_loader %}
<!DOCTYPE html>
<html>
  <head>
  <meta charset="UTF-8">
  <title>Example</title>
  </head>

  <body>
  {% verbatim %}
  <div id="app">
  {{ message }}
  </div>
  {% endverbatim %}

  {% render_bundle 'main' %}
  <script>
  var app = new Vue({
  el: '#app',
  data: {
  message: 'Hello Vue!'
  }
  })
  </script>
  </body>
</html>

log(django)

django        | [09/Jan/2020 11:22:58] "GET /vue/ HTTP/1.1" 200 374
django        | [09/Jan/2020 11:22:58] "GET /static/webpack_bundles/main-ccb1054f18bba9ee992d.js HTTP/1.1" 304 0

urls.py

from django.urls import path
from .views import signupfunc, loginfunc, listfunc, logoutfunc, vuefunc

urlpatterns = [
    path('signup/', signupfunc, name='signup'),
    path('login/', loginfunc, name='login'),
    path('list/', listfunc, name='list'),
    path('logout/', logoutfunc, name='logout'),
    path('vue/', vuefunc, name='vue'),
]

vies.py

<snip>

def vuefunc(request):
    return render(request, 'vue.html')

1 Ответ

1 голос
/ 22 февраля 2020

Это может быть глупый вопрос, но импортируете ли вы файл main.js из шаблона? Это выглядело бы примерно так:

<script src="{% static 'js/main.js' %}"></script>

Кроме того, в качестве отступления я использую Vue с django и всегда перечисляю свой собственный разделитель в коде Vue, поэтому у меня нет поместить {% verbatim %} теги вокруг каждой переменной. Это выглядит примерно так:

var app = new Vue({
  el: '#app',
  delimiters: ['${', '}'],
  data: {
    message: 'Hello Vue!'
  }
})

, и вы можете выбрать любой разделитель, какой захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...