我正在尝试从MySQL中的外部数据库中读取信息。我在项目中创建了一个应用程序并连接到外部数据库,如下所示:
'cpu_project': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
'HOST': '***',
}
在我的主urls.py
中,我添加了这个:
url(r'^cpu/', include('cpu.urls')),
在我的应用的models.py
中,我有这个:
def cpu():
rows = MyModel.objects.using('mysql').all()
return render_to_response('cpu/cpu_data.html', {'rows': rows})
我的问题是我不知道如何将数据从模型传递到视图。
我在这个应用程序的urls.py
中有这个:
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
view.py
有这个:
from . models import cpu
def index(request):
return render(request, 'cpu/cpu_data.html')
我的cpu_data.html
有这个:
{{ rows }}
但我看到一个空白页面。有关于此的任何想法吗?
我试图在模型中传递一个简单的值 - 我改变了这个:
rows = MyModel.objects.using('mysql').all()
到此:
rows = 1
答案 0 :(得分:0)
你遇到了一些设计错误
首先使用settings.py中的using()
方法,使用'cpu_project'
作为数据库名称,因此您需要使用它来查询该数据库。
# Use this to query your cpu_project database
rows = MyModel.objects.using('cpu_project').all()
'cpu_project': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '***',
'USER': '***',
'PASSWORD': '***',
'HOST': '***',
}
Here您可以找到更多信息。
其次:
就像@Daniel所说,你需要从def cpu()
删除models.py
函数,不知道函数的目的是什么。它需要在views.py
。
在视图函数中查询数据库,而不是在models.py中查询。 (除非它具有特定于依赖于它的模型的目的)