python_webApp

 

 

 

 

提升開發效率:當更改代碼後,不重啓服務器就能使用新效果php

參考連接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432339228196a8eb6fb8832b48b5aa0d740346536ead000css

錯誤:html

解決辦法:vue

if __name__ == '__main__':
    argv = sys.argv[1:]
    if not argv:
        print('Usage: ./pymonitor your-script.py')
        exit(0)
    if argv[0] != 'python3':
        argv.insert(0, 'python3')
    command = argv
    path = os.path.abspath('.')
    start_watch(path, None)
#替換爲
if __name__ == '__main__':
    argv = sys.argv[1:]
    if not argv:
        print('Usage: ./pymonitor your-script.py')
        exit(0)
    if argv[0] != 'python':  # 這裏用python不要用python3除非你的系統也是用python3 XX.PY來啓動python程序的
        argv.insert(0, 'python')
    command = argv
    path = os.path.abspath('.')
    start_watch(path, None)

能在請求處理程序中返回htmlpython

參考連接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432339095180ce91c53cdab841bfa9c342a297b886fe000mysql

@get('/')
def index(request):
    users = yield from User.findAll()#查詢全部用戶信息,用於接下來輸出
    return {
        '__template__': 'test.html',
        'users': users
    }


#下面是全部的test.html的代碼
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Test users - Awesome Python Webapp</title>
</head>
<body>
    <h1>All users</h1>
    {% for u in users %}
    <p>{{ u.name }} / {{ u.email }}</p>
    {% endfor %}
</body>
</html>

  當用戶在上面的輸入框中鍵入字符時,會執行函數 "showHint()" 。該函數由 "onkeyup" 事件觸發jquery

參考連接:https://www.w3cschool.cn/ajax/ajax-asp-php.htmlweb

錯誤:ajax

  在用getElementById等尋找元素時,必定要讓元素在<script>的上面sql

<!DOCTYPE html>
<html>
<body>

<p>
JavaScript 可以直接寫入 HTML 輸出流中:
</p>
<h1 id="demo">
您只能在 HTML 輸出流中使用 <strong>document.write</strong>。
若是您在文檔已加載後使用它(好比在函數中),會覆蓋整個文檔。
</h1>
<script>

x=document.getElementById("demo");  // 找到元素
x.innerHTML="Hello JavaScript!";  
document.write("<h1>This is a heading</h1>");
document.write("<p>This is a paragraph.</p>");
</script>



</body>
</html>

  原來它纔是要找的內容

 

 

 

var x=document.getElementById("myDiv").innerHTML
不是
var x=document.getElementById("myDiv")#是[object NodeList]
#######################注意:有時要加s好比用name查找時 也不是 var x=document.getElementById("myDiv").value#會顯示未定義這是對於元素,對於input不是這樣
x=document.getElementById("demo")  //查找元素
x.innerHTML="Hello JavaScript";    //改變內容
alert("ss")
typeof x == "string"

data['name'] = $('#name').val()

  js獲取input內容:https://blog.csdn.net/widenstage/article/details/68938975

  <form id="form1">
        <table border="0">
            <tr>
                <td>
                    姓名:
                </td>
                <td>
                    <input id="name" name="name" type="text" />
                </td>
            </tr>
        </table>
   </form>

       function readtext() {
 
            // 方法一
            var name = document.getElementById("name").value;
            alert(name);
 
            // 方法二
            name = form1.name.value;
            alert(name);
 
            // 方法三 jquery
            name = $("#name").val();
            alert(name);
 
            // 方法四 jquery
            name =  $("input[id='name']").val();
            alert(name);
 
            // 方法五 jquery
            name = $("#name").attr("value");
            alert(name);
 
            // 方法六 jquery
            name = $("input[id='name']").attr("value");
            alert(name);
                      
        }

  

沒反應時右上角會有紅叉號顯示錯誤

 而後點擊下圖右上角會定位

沒反應時右上角會有紅叉號顯示錯誤

 

CGI編程

http://www.runoob.com/python/python-cgi.html、

JSON.stringify() 方法是將一個JavaScript值(對象或者數組)轉換爲一個 JSON字符串

 

錯誤:

服務器是顯示:

405是方法不被容許,202是服務器接受請求但沒處理,通過查詢引發405的緣由有:提交方式的類型錯誤,post請求對應的是get方法處理,或者是明確指定「content-type」,通過認真檢查,發現是handler中的處理程序有重名的,修更名稱,完成,最後我知道了這個狀態碼的解決辦法,必定是請求處理程序沒有綁定好的緣由,至因而那種緣由,只能慢慢找了,畢竟,我也沒想到,居然會寫出重名的函數

參考連接:

https://blog.csdn.net/yiifaa/article/details/80928487

https://blog.csdn.net/qq_35804654/article/details/77272304

form的這些屬性須要有,差點忘了

<form action="/signin" method="post">

序列化表單值:jQuery ajax - serialize() 方法

參考連接:http://www.w3school.com.cn/jquery/ajax_serialize.asp

注意表單值的名稱

 

flask經常使用庫:https://www.jianshu.com/p/584fbff16946

關於這個ajax與後臺交互,我在這個問題上停留了超過一天的時間,由於沒有系統性的學習,致使遇到大多數問題,都只能按照錯誤去網上找教程來解決,而不是碰見問題分析問題,此次依舊,期間經歷了好屢次失敗,包括問了同窗也沒有解決,最後在一篇曾經看到過的博客上發現瞭解決辦法

這一慘痛的教訓給我留下了深入的影響,在遇到問題時,必定多看些解決辦法,不能找到幾篇詳細閱讀,並且必定要仔細閱讀解決辦法

json.dumps()和json.loads()是json格式處理函數(能夠這麼理解,json是字符串)
  (1)json.dumps()函數是將一個Python數據類型列表進行json格式的編碼(能夠這麼理解,json.dumps()函數是將字典轉化爲字符串)
  (2)json.loads()函數是將json格式數據轉換爲字典(能夠這麼理解,json.loads()函數是將字符串轉化爲字典)

subscriptable可下標訪問的

使用模板

  參考連接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320129740415df73bf8f81e478982bf4d5c8aa3817a000

1)處理帶有參數的URL如:

@post('/api/comments/{id}/delete')#這個也挺好的--------------------------
def api_delete_comments(id, request):#參數爲id

  

 

2)變量替換的操做

3)關於{{}}的意思,html頁面中的這段是表明一個變量,是請求處理函數傳遞參數後進行替換用的

 

python 參數

參考連接:

  比較詳細:https://www.cnblogs.com/bingabcd/p/6671368.html

  菜鳥教程:http://www.runoob.com/python3/python3-function.html

  命名關鍵字參數:https://www.cnblogs.com/Commence/p/5578215.html

  1)*後面的參數被視爲命名關鍵字參數。若是單獨出現星號 * 後的參數必須用關鍵字傳入。例:

  

>>> def f(a,b,*,c):
...     return a+b+c
... 
>>> f(1,2,3)   # 報錯
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 3 were given
>>> f(1,2,c=3) # 正常#關鍵字參數是這樣傳入的
6
>>>

 

vue.js

參考連接:https://cn.vuejs.org/v2/guide/events.html

沒有postJSON,若是不是考慮到了是否有這個函數的問題,我真不知道這個問題會浪費我多少時間

有些網頁修改後不會生效,必須重啓服務器才行

假如這個錯誤真的解決了的話,回想起前幾天那樣去解決錯誤,那麼就應該認識到那樣去作是多麼愚蠢,而此次閱讀源代碼,或許是稍微明智的選擇

 

這個錯誤的緣由找到了,多虧我去handler裏面看了一眼,以前一直是在從終端裏的報錯信息裏尋找提示信息,

handler裏面的邏輯

@get('/document_delete')
def document_delete(*,user):
        #name = request.args.get('username', '')
        #name=request.POST.get('username')
        #name=request.GET.get('username')
        print(user)
        return user

  是由於裏面的html中的post發送的鍵名必須是user,而我換

//$.getJSON("/document_delete",{'a':'b'},function(){console.log('over');});#會報錯
  $.getJSON("/document_delete",{'user':'123453'},function(){alert('script')});#不會

  我說這麼會這麼蹊蹺,原來是這裏的緣由,是鍵名沒有指定的值(請求處理的裏面指定的user),這樣提及來那個錯誤

Traceback (most recent call last):                                                                            
  File "C:\Users\Administrator.SC-201605202132\Envs\web_go\lib\site-packages\aiohttp\web_protocol.py", line 41
8, in start                                                                                                   
    resp = await task                                                                                         
  File "C:\Users\Administrator.SC-201605202132\Envs\web_go\lib\site-packages\aiohttp\web_app.py", line 458, in
 _handle                                                                                                      
    resp = await handler(request)                                                                             
  File "C:\Users\Administrator.SC-201605202132\Envs\web_go\lib\site-packages\aiohttp\web_middlewares.py", line
 119, in impl                                                                                                 
    return await handler(request)                                                                             
  File "app.py", line 67, in logger                                                                           
    return (await handler(request))                                                                           
  File "app.py", line 85, in response                                                                         
    r = await handler(request)                                                                                
  File "C:\Users\Administrator.SC-201605202132\Envs\web_go\lib\site-packages\aiohttp\web_urldispatcher.py", li
ne 157, in handler_wrapper                                                                                    
    result = await result                                                                                     
  File "C:\Users\Administrator.SC-201605202132\Envs\web_go\coroweb.py", line 141, in __call__                 
    return web.HTTPBadRequest('Missing argument: %s' %name)                      #這裏的請求一個位置參數,可是傳遞了兩個就說的通了                             
TypeError: __init__() takes 1 positional argument but 2 were given                                            

 jquery賦值

  

$("#result_box").val(result)
#不是
$("#result_box").val()=result;
對於jquery,要嘗試分清楚是括號外和括號裏調用方法

  關於高階函數中的返回函數,可能因爲個人理解並不深入,我認爲他只是把判斷應該使用什麼函數的步驟給抽取出來,增長代碼的重用性,這樣有一些好處,能夠解決用ifelse語句判斷改使用什麼函數時帶來的要傳什麼參數的問題wrapper()函數的參數定義是(*args, **kw),所以,wrapper()函數能夠接受任意參數的調

 這段代碼

async def create_pool(loop, **kw):
    logging.info('create database connection pool...')
    global __pool
    __pool = await aiomysql.create_pool(#這樣的變量,能包含不少東西
        host=kw.get('host', 'localhost'),#這樣使用關鍵字
        port=kw.get('port', 3306),
        user=kw['user'],
        password=kw['password'],
        db=kw['db'],
        charset=kw.get('charset', 'utf8'),
        autocommit=kw.get('autocommit', True),
        maxsize=kw.get('maxsize', 10),
        minsize=kw.get('minsize', 1),
        loop=loop
    )

  

取餘數

if delta < 604800:
        return u'%s天前' % (delta // 86400)

jinja2 Environment是一個類用於儲存配置,或者全局變量,或者用於從文件系統其餘位置加載模板

  參考連接:http://docs.jinkan.org/docs/jinja2/api.html?highlight=environment

  FileSystemLoader也是一個類,從文件系統加載模板。此加載程序能夠在文件系統上的文件夾中查找模板,而且是加載它們的首選方法。加載器將模板的路徑做爲字符串,或者若是須要多個位置,則列出它們,而後按給定順序查找:

loader = FileSystem Loader ([ '/ path / to / templates' ,'/ other / path' ]

*)google那個點擊框外的動畫

*)新問題:想根據model的值讓他選擇函數,可是我不想用if...else語句因此就開始尋找python的一些特性來解決這個問題,找到了修飾器、(不行)、偏函數(這個還有點用)。可是也不行。 

  
#可使用相似今天看那個偏函數裏面對int2的傳入自定義的base來解決jieba()中的模式來選擇,應該也是能夠傳入字符串的
#使用偏函數來固定某些參數,這在這裏可能看不到這種偏函數帶來的好處,這是正常的,由於他本來就是用在須要屢次改動函數內的某些參數狀況
#而且,由於我是想讓model包含的值來替換jieba.cut裏面的「cut_all=True」,這大概是用偏函數解決不了,由於偏函數能夠固定某些參數的值,
# 而並不能直接替換參數名和值的,因此若是隻用cut_all=True,或者False,那麼能夠直接使用
#jieba_cut(str,cut_all=model)來替換if...else,可是如今還有jieba.cut_for_search()連函數名就變了,因此用這個應該解決不了,我應該尋找能
#面對不一樣函數名來替換他們相同參數的一種python特性
#忽然想到,能不能讓自定義函數使用偏函數這種特性呢
def model_choose(str,model):
    #jieba_cut=functools.partial(jieba.cut,cut_all=True)
    global result   
    if model==1:#標誌着是全模式
        result.append('全模式')
        jieba.cut(str,cut_all=True)
    elif model==2:#標誌着精確模式
        result.append('精確模式')
        return jieba.cut(str,cut_all=False)
    else:#搜索硬性模式
        result.append('搜索引擎模式')
        return jieba.cut_for_search(str)

 

*)問題:pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'")

  類似問題:https://blog.csdn.net/su749520/article/details/78940096/

  由於廖老師把連接配置寫在config_default.py裏了,而他的用戶名和個人密碼不同,修改後解決

*)使用pymonitor.py提示某些文件找不到

  

Traceback (most recent call last):
  File "pymonitor.py", line 68, in <module>
    start_watch(path, None)
  File "pymonitor.py", line 51, in start_watch
    start_process()
  File "pymonitor.py", line 40, in start_process
    process = subprocess.Popen(command, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr)
  File "c:\users\administrator.sc-201605202132\appdata\local\programs\python\python36\Lib\subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "c:\users\administrator.sc-201605202132\appdata\local\programs\python\python36\Lib\subprocess.py", line 1017, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] 系統找不到指定的文件。

  解決方案:https://www.liaoxuefeng.com/discuss/001409195742008d822b26cf3de46aea14f2b7378a1ba91000/001453355013335b14701d6d6494b6cb7d1268735e99cdd000

*)使用uikit框架問題

  不知道什麼緣由必須將static下的uikit.min.css重命名爲其餘的名才能顯示效果

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息