最近再給客戶做乙個資料展示的後台操作介面,給的資料是mongo的,要知道django對mongo不是很友好,網上有說views層操作mongo資料庫和操作mysql大體差不多,但是例如mysql的查詢語句是下面這樣查詢所有的:
all = models.send.objects.all().values('party_id','party_name','party_img')
很遺憾,mongo可是做不到,他沒有all(),沒有value(),所以用操作mysql的方法來操作mongo是不切實際的。
補充一句,django對接mongo是不需要執行遷移的,但是model層建表還是要有的,當連線好資料庫執行程式後(通過瀏覽器執行配置好的url),會根據models建的模生成資料庫;但是如果想拿到客戶給的mongo資料,model層的表名(即類名)要和拿到的collection(類似於mysql的表)的名稱一致,而models層的欄位名要和collection內部的key值一致(因為mongo不同於mysql,其collection資料形式是key:value的形式)
整體流程如下:
主要目錄展示:
展示models的建模
from mongoengine import
*#mongo的模板是要繼承mongoengine下document的,而不是mysql裡面的models
class
article
(document)
:# 定義資料庫中的所有字段,及拿到的客戶表key值
two_level_site = stringfield(max_length=32)
three_level_site = stringfield(max_length=32)
four_level_site = stringfield(max_length=32)
subject = stringfield(max_length=32)
department = stringfield(max_length=32)
article_title = stringfield(
) article_link = stringfield(
) article_type = stringfield(
) article_post_date = datetimefield(
) insert_time = datetimefield(
) article_stream = stringfield(
) article_content = stringfield(
)# 指明連線的資料表名
meta =
views層
# 取值
defneiron**iew
(request)
:if request.method ==
'get'
:#article是表名,這一步是拿到article的queryset
find_neirong = article.objects
#既然沒有mysql的查詢方法,那麼就自建乙個列表,用於儲存取到的資料
context =
# 將列表設定為全域性變數
global context
# queryset是需要遍歷才能取到值的
for f in find_neirong:
#拿到資料庫的id,注意models裡面並沒有設定id欄位,這樣拿到的是mongo自動生成的objectid
id= f.
id#通過「物件+.」的方法拿到資料庫指定key值下面的內容
#注意其中two_title是可以任意命名的,而two_level_site必須要和資料庫的key一致
two_title = f.two_level_site
three_title = f.three_level_site
four_title = f.four_level_site
lanmu = f.subject
bushi = f.department
title = f.article_title
t_url = f.article_link
t_sjlx = f.article_type
date1 = f.article_post_date
date2 = f.insert_time
a_stream = f.article_stream
# 遍歷取完的值要放到乙個暫時的字典中,改字典的目的是將取到的值封裝成key、value的形式
#只有這樣才能在介面上根據key取到其對應資料庫的value值,單引號內部明明可以隨意,但是後面的value是必須要和上面寫的字段一致,為了更容易理解,建議我這樣寫
context1 =
#最終context的形式為[...{}]
# 最終就可以通過render渲染context到html介面取值了
return render(request,
'content.html'
,)
配置url
#主url
from django.urls import path,include
urlpatterns =
[ path(
'neirong/'
,include())
,]
from django.contrib import admin
from django.urls import path,include
urlpatterns =
[ path(
'',views.neiron**iew),]
介面取值
>
>
}td>
>
}td>
>
})td
>
>
}td>
>
}td>
>
}td>
>
}td>
scope
="row"
>}td
>
>
}td>
>
}td>
>
}td>
>
}td>
>
role
="presentation"
class
="dropdown"
>
class
="btn btn-default dropdown-toggle"
data-toggle
="dropdown"
href
="#"
role
="button"
aria-haspopup
="true"
aria-expanded
="false"
>
操作class
="caret"
>
span
>
button
>
class
="dropdown-menu"
>
>
href
="#"
>
編輯a>
li>
>
href
="#"
>
刪除a>
li>
>
href
="#"
>
全域性置頂a
>
li>
ul>
div>
td>
tr>
執行檢視結果:
如果對您有幫助,賞口飯吃❤謝謝老闆❤
mysql對接 對接mysql
新建 對接mysql 安裝pymysql 參考 安裝pymysql 在檔案 bianbingdang init py 內寫入如下 import pymysql pymysql.install as mysqldb 修改配置 開啟配置檔案 bianbingdang settings.py 找到如下 d...
搭建django框架並連線mongodb資料庫
1 使用pycharm的專業版 新建乙個django專案 2 安裝包 pip install mongoengine1 在settings.py中進行配置 如果原先沒連線mysql資料庫,就把預設的設定為空,如果有可以保留,也不會不影響 原先沒有連線其他資料庫 databases from mong...
天貓精靈對接1 outh對接
公司的智慧型家居產品需要接入語音控制,目前在對接阿里語音的天貓精靈 對接天貓精靈的第一步是完成outh鑑權 鑑權的部落格可以參照如下部落格 免登入式的 帶有登入的 貼個 說說自己的實現 天貓精靈的文件還是很詳細的,第一步是登入認證,認證ok之後重定向天貓精靈的位址 帶上code的 登入過程還是必要的...