① Django接受前端數據的幾種方法
字元型
字元型的數據相對好獲取,前端傳遞的方法如下:
sendData = {
"exporttype": exporttype,
"bugids": bugids,
"test": JSON.stringify({"test": "test"})
};
在Django的後端只要使用exporttype = request.GET.get("exporttype")
就能正常的獲取到這個數據了。
注意: 在Python2.7中數據是unicode編碼的,如果要使用,有時候需要進行轉str
結果示例:
Excle <type 'unicode'>
數組型
獲取數組型的數據如果使用獲取字元串的數據的方法,打出的結果是None。我們要使用這個方法:
bugids = request.GET.getlist("bugids[]")
這樣獲取的數據就是數組類型。
注意: 獲取的數組中的元素是unicode編碼的,在某些時候使用需要轉編碼
結果示例:
•傳遞的url
[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Excle&bugids%5B%5D=102&bugids%5B%5D=101&bugids%5B%5D
•獲取的數據
[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u'90', u'89', u'88', u'87'
字典型
字典型數據其實可以當成字元串數據來處理,獲取到對應字元串後使用JSON模塊做一下格式化就行了。
對於前端來說,傳遞字典型的數據就是傳遞JSON數據,所以使用的方法是:
"test": JSON.stringify({"test": "test"})
結果示例:
{"test":"test"} <type 'unicode'>
相關源碼
•Get方法
Get方法是wsgi裡面的一個方法。
def GET(self):
# The WSGI spec says 'QUERY_STRING' may be absent.
raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '')
return http.QueryDict(raw_query_string, encoding=self._encoding)
最終返回的是一個http.QueryDict(raw_query_string, encoding=self._encoding)http的原始數據,而QueryDict繼承於MultiValueDict ,所以我們直接看MultiValueDict就好了。
•MultiValueDict
其實源碼看起來並不難。
def get(self, key, default=None):
"""
Returns the last data value for the passed key. If key doesn't exist
or value is an empty list, then default is returned.
"""
try:
val = self[key]
except KeyError:
return default
if val == []:
return default
return val
def getlist(self, key, default=None):
"""
Returns the list of values for the passed key. If key doesn't exist,
then a default value is returned.
"""
try:
return super(MultiValueDict, self).__getitem__(key)
except KeyError:
if default is None:
return []
return default
def __getitem__(self, key):
"""
Returns the last data value for this key, or [] if it's an empty list;
raises KeyError if not found.
"""
try:
list_ = super(MultiValueDict, self).__getitem__(key)
except KeyError:
raise MultiValueDictKeyError(repr(key))
try:
return list_[-1]
except IndexError:
return []
② 後端用了 Django 還需要單獨的前端框架嗎
關於後端程序員寫前端用以下框架:
1、用Dreamweaver或者網頁查看源代碼。
2、bootstrap對響應式的支持以及良好的體驗
3、metronic/adminLTE這個框架的代碼更多的是屬於粘合劑,將各種不同的第三方庫的前端代碼粘合起來。
4、 extjs系列。這個是前端領域的龐然大物封裝度很高,具有自稱體系的元素選擇引擎和瀏覽器兼容方案,JS寫法也有自己的方式,組件很多。
5、vaadin/GWT是使用後台語言寫前端。不過不是很建議使用這種方案。
③ django前端怎麼設置 靜態文件路徑
設置一個路徑變數
APP_PATH=os.path.dirname(os.path.dirname(__file__))
#
Absolute
path
to
the
directory
static
files
should
be
collected
to.
#
Don't
put
anything
in
this
directory
yourself;
store
your
static
files
#
in
apps'
"static/"
subdirectories
and
in
STATICFILES_DIRS.
#
注意要修改STATIC_ROOT變數
STATIC_ROOT
=
os.path.join(APP_PATH,'static').replace('\\','/')
#
URL
prefix
for
static
files.
#
Example:
ample.com/static/",
"h
ic.example.com/"
STATIC_URL
=
'/static/'
#
當然還有STATICFILES_DIRS變數
STATICFILES_DIRS
=
(
#
Put
strings
here,
like
"/home/html/static"
or
"C:/www/django/static".
#
Always
use
forward
slashes,
even
on
Windows.
#
Don't
forget
to
use
absolute
paths,
not
relative
paths.
os.path.join(APP_PATH,'mobile_oa_server/static').replace('\\','/'),
)
④ django 怎麼使用前端框架
bootstrap是比較好的前端開發框架,django可以使用這個框架來,上手也容易。
⑤ django 可以實時接收前端的數據嗎是怎麼實現的
實時接收這和Django後台並沒有什麼關系了,關鍵是要前端實時請求。這個可以通過ajax實現。
⑥ 求助django 實現前端頁面檢索功能的代碼
設我們的 django 博客應用有如下的文章模型:
blog/models.pyclass Post(models.Model):
# 標題
title = models.CharField(max_length=70)
# 正文
body = models.TextField()
# 其他屬性
def __str__(self):
return self.title
先看到第 1 步,用戶在搜索框輸入搜索關鍵詞,因此我們要在博客上為用戶提供一個搜索表單,html 表單代碼大概像這樣:
<form method="get" action="/search/">
{% csrf_token %} <input type="search" placeholder="搜索" required>
<button type="submit">搜索</button></form>
特別注意在 form 標簽下有一個 {% csrf_token %},這是 django 用來防禦跨站請求偽造(CSRF)攻擊的機制。如果不知道什麼是 CSRF 的話也沒有關系,只要記住在使用 django 時,前端的表單代碼里一定要加上 {% csrf_token %}。
用戶輸入了搜索關鍵詞並點擊了搜索按鈕後,數據就被發送給了 django 後台伺服器。表單的 action 屬性的值為 /search/,表明用戶提交的結果將被發送給 /search/ 這個 URL。我們為這個 URL 綁定一個 django 視圖函數,在這個視圖函數里完成前面第 2 步提到的過程。假設我們把視圖函數的代碼寫在 blog/views.py 里:
blog/views.pydef search(request):
q = request.GET.get('q')
error_msg = ''
if not q:
error_msg = '請輸入關鍵詞'
return render(request, 'blog/errors.html', {'error_msg': error_msg})
post_list = Post.objects.filter(title__icontains=q)
return render(request, 'blog/results.html', {'error_msg': error_msg,
'post_list': post_list})
首先我們使用 request.GET.get('q') 獲取到用戶提交的搜索關鍵詞。用戶通過表單提交的數據 django 為我們保存在 request.GET 里,這是一個類似於 Python 字典的對象,所以我們使用 get 方法從字典里取出鍵 q 對應的值,即用戶的搜索關鍵詞。這里字典的鍵之所以叫 q 是因為我們的表單中搜索框 input 的 name 屬性的值是 q,如果修改了 name 屬性的值,那麼這個鍵的名稱也要相應修改。
接下來我們做了一個小小的校驗,如果用戶沒有輸入搜索關鍵詞而提交了表單,我們就無需執行查詢,而是渲染一個錯誤頁面提示用戶請輸入關鍵詞。
如果用戶輸入了搜索關鍵詞,我們就通過 filter 方法從資料庫里過濾出符合條件的所有文章。這里的過濾條件是 title__icontains=q,即 title 中包含(contains)關鍵字 q,前綴 i 表示不區分大小寫。這里 icontains 是查詢表達式(Field lookups),其用法是在模型需要篩選的屬性後面跟上兩個下劃線。django 內置了很多查詢表達式,建議過一遍 django 官方留個印象,了解每個表達式的作用,以後碰到相關的需求就可以快速定位到文檔查詢其用途:Field lookups
接下來就是渲染搜索結果頁面,顯示符合搜索條件的文章列表,下面是一個模板的簡單示例:
results.html
{% if error_msg %} <p>{{ error_msg }}</p>{% endif %}
{% for post in post_list %} <div>
在這里顯示文章的相應信息 </div>{% empty %} <div class="no-post">
沒有搜索到符合條件的文章 </div>{% endfor %}
有了視圖函數後記得把視圖函數映射到相應了 URL,前面我們表單數據提交的 URL 為 /search/,因此將視圖函數 search 綁定到該 URL 上。
blog/urls.pyurlpatterns = [
# 其他 url 配置
url(r'^search/$', views.search, name='search'),]
大功告成!
⑦ django可以開發前端嗎
後端。使用 rest api 就是純後端。使用模板的話也算是了一部分前端。
⑧ django用什麼前端框架
一般Django這類後端框架其實不和前端框架有直接綁定關系。
不過個人推薦Angular前端框架。
⑨ django選擇什麼框架做前端UI比較好
1、flex
Apache基金會今天發布了Flex 4.8版本,這是Adobe將Flex捐獻給Apache基金會後發布的第一個版本。
需要注意的是,Flex目前還在孵化階段,還不是Apache的正式項目,Flex 4.8也不是一個正式的Apache版本。
Apache稱,該版本標志著Flex新時代的開始,Flex的未來將由社區來驅動,而不是由一個公司驅動。開發者可以通過貢獻代碼,來幫助改進Flex,如修復bug、增加功能等。
從Macromedia賣給Adobe,然後又捐給apache,不知道搞什麼名堂。不過還好沒有經過大幅重構,否則就真的是悲哀了!
2、extjs
ExtJS是一種主要用於創建前端用戶界面,是一個基本與後台技術無關的前端ajax框架。
功能豐富,無人能出其右。
無論是界面之美,還是功能之強,ext的表格控制項都高居榜首。
華麗的界面,靈活的功能,還有開發工具都是配套的,但有個最大的問題,用就得花錢!
3、easyui
easyui幫助你構建你的web應用更加容易。
它是一個基於jquery的插件,開發出來的一套輕量級的ui框架,非常小巧而且功能豐富。
官方網站是:
但是她有一個最大的問題就是代碼只能找到以前的開源的版本,到了1.2以後的版本源代碼都是經過混淆的,如果遇到問題修改起來會非常麻煩!不過一個比較大的優勢是開源免費,並且界面做的還說的過去!
4、MiniUI
又一個基於jquery的框架,開發的界面功能都很豐富。
jQuery MiniUI - 快速開發WebUI。
它能縮短開發時間,減少代碼量,使開發者更專注於業務和服務端,輕松實現界面開發,帶來絕佳的用戶體驗。
使用MiniUI,開發者可以快速創建Ajax無刷新、B/S快速錄入數據、CRUD、Master-Detail、菜單工具欄、彈出面板、布局導航、數據驗證、分頁表格、樹、樹形表格等典型WEB應用系統界面。
界面做的挺不錯,功能也挺豐富,但是有兩個比較大的問題,一個是收費,一個是沒有源碼,說白了,不開源!基於這個開發如果想對功能做擴展就需要找他們的團隊進行升級!
5、jQuery UI
jQuery UI 是一套 jQuery 的頁面 UI 插件,包含很多種常用的頁面空間,例如 Tabs(如本站首頁右上角部分) 、拉簾效果(本站首頁左上角)、對話框、拖放效果、日期選擇、顏色選擇、數據排序、窗體大小調整等等非常多的內容。
功能非常全面,界面也挺漂亮的,可以整體使用,也可以分開使用其中的幾個模塊,免費開源!
6、DWZ
DWZ富客戶端框架(jQuery RIA framework), 是中國人自己開發的基於jQuery實現的Ajax RIA開源框架.
設計目標是簡單實用,快速開發,降低ajax開發成本。
歡迎大家提出建議,我們將在下一版本中進一步調整和完善功能.共同推進國內整體ajax開發水平。
畢竟是國產的,支持一下,而且源碼完全公開,可以選擇一下!不過性能怎麼樣不敢確定!
7、GWT
Google 網頁工具包——GWT 提供了一組基於Java語言的開發包,這個開發包的設計參考Java AWT包設計,類命名規則、介面設計、事件監聽等都和AWT非常類似。熟悉Java AWT的開發者不需要花費多大的力氣就能夠快速的理解GWT開發工具包,將更多地時間投入到GWT應用的開發過程中。
你不用去了解這樣那樣的javascript框架,通過java你就可以寫出功能豐富的界面,可以做單元測試,畢竟是google的產品,嚴重支持一下!
8、YUI
Yahoo! UI Library (YUI) 是一個開放源代碼的 JavaScript 函數庫,為了能建立一個高互動的網頁,它採用了AJAX, DHTML 和 DOM 等程式碼技術。它也包含了許多 CSS 資源。使用授權為 BSD許可證,基本上沒怎麼研究過!
YUI Compressor倒是挺出名的,這套UI庫不知道應用的情況怎麼樣!
9、Sencha
Sencha 是由 ExtJS、jQTouch 以及 Raphael 三個項目合並而成的一個新項目。
大公司的框架,並且是幾樣庫的強強聯合,值得推薦!
10、Dojo
在國內應用好像不是很廣,不過性能上應該沒問題。
Dojo是一個用javascript語言實現的開源DHTML工具包。
有多個基金會的支持,包括IBM和SUN,都是軟體界的泰斗,值得信賴!
11、ZK
ZK是一套以 AJAX/XUL/Java 為基礎的網頁應用程式開發框架,用於豐富網頁應用程式的使用介面。最大的好處是,在設計AJAX網路應用程式時,輕松簡便的操作就像設計桌面程式一樣。 ZK包含了一個以AJAX為基礎、事件驅動(event-driven)、高互動性的引擎,同時還提供了多樣豐富、可重復使用的XUL與HTML組件,以 及以 XML 為基礎的使用介面設計語言 ZK User-interfaces Markup Language (ZUML)。
在線的demo
設計器的demo
日歷組件
功能豐富,全面,文檔齊全,而且升級了很多次,非常值得推薦!
12、OperaMasks-UI
OperaMasks-UI是OperaMasks團隊 2011下半年打造的一款輕量級前端JS組件庫,旨在提供一款學習曲線低、定製性靈活、樣式統一,且多瀏覽器支持、覆蓋企業業務場景的前端 JavaScript UI組件庫。目前,該團隊已將這一產品以LGPL 開源協議開放給社區。
文檔豐富,功能齊全,而且很容易使用和開發!而且是國產的喲!
13、JavaFX
Sun公司(已於2009年被Oracle公司收購)在2008年12月05日發布了JavaFX技術的正式版,它使您能利用 JavaFX 編程語言開發富互聯網應用程序(RIA)。JavaFX Script 編程語言(以下稱為JavaFX)是Sun微系統公司開發的一種declarative, statically typed(聲明性的、靜態類型)腳本語言。JavaFX技術有著良好的前景,包括可以直接調用Java API的能力。因為 JavaFX Script是靜態類型,它同樣具有結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和發布單元,這些特性使得使用Java技術創建和管理大型程序 變為可能。
⑩ 如果使用django開發使用什麼樣的前端技術比較好
bootstrap是比較好的前端開發框架,django可以使用這個框架來。上手也容易。拿來例子代碼,改幾下就成了。需要配合好static等路徑。