传递模型数据以在Django中查看

时间:2016-09-02 17:45:10

标签: django django-models django-templates

我正在尝试从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

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中查询。 (除非它具有特定于依赖于它的模型的目的)