我对 django 和文件位置非常困惑,我使用的是 django 1.10。但是在我的 static/(django-proj-name)/js/ 文件夹中(只是显示了我的 main.js 文件的方式,我需要调用 python 脚本,结合jquery tokeninput 插件。让我们调用脚本keywords.py
这个脚本需要调用一个模型的所有实例Keyword
,所以我需要能够从我的模型文件中导入。
我对 django 有点缺乏经验,但是通过回顾我在夏天看到的一些项目,我开始相信包括线,from (django-proj-name).models import *
是从模型导入的主要方式。这至少适用于我的 /management/commands/ 文件夹中的所有文件。
但是我尝试放入keywords.py
我的静态文件夹只是因为我知道至少我可以使用{% static %}
模板标签在 html 中查找文件。我在没有管理的情况下运行了文件。
Traceback (most recent call last):
File "../../management/commands/import_statements.py", line 5, in <module>
from gtr_site.models import *
ImportError: No module named gtr_site.models
尽管我在 /management/commands/ 中有相同的输入行。这不会造成任何问题。
所以我没有把文件放在“正确”的文件位置......我没有把keywords.py放在
我知道如何从我的models.py 文件中从keywords.py 脚本的位置导入
我的 javascript 文件可以找到它并运行它而不会崩溃。此脚本需要能够从模型成功导入。
那么我应该把这个脚本放在哪里,或者我如何为它指定一个位置?
假设您有一个需要以下格式数据的 js 库:
{"results": [
{"name": "Foo", "number": 1},
...,
{"name": "Bar", "number": 999}
]}
您启动了一个名为 myapi 的应用程序:
$ django manage.py startapp myapi
假设你有一个这样的模型myapi/models.py
:
from django.db import models
class Foo(models.Model):
name = models.CharField(max_lenght=100),
number = models.IntegerField()
在myapp/views.py
定义以下视图:
from django.http import JsonResponse
from django.views import View
from .models import Foo
class FooList(View):
def get(self, request, *args, **kwargs):
qs = list(Foo.objects.values('name', 'number').all())
data = {"results": qs}
return JsonResponse(data)
然后将此视图映射到某个 url。为简单起见,让我们将其添加到您的主 urls.py 文件中:
url('api/v1/foo/$', FooList.as_view(), name='foo-list'),
现在您应该能够从浏览器访问它。下面的示例使用 jQuery:
$.getJSON('http://yourdomain.com/api/v1/foo/',
function(data, textStatus, jqXHR) {
console.log(data);
}
)
这就对了。我是凭记忆做到的,因此您可能会发现一些错误或缺少导入 - 但这应该会让您走上正轨。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句