日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

菜鸟教程(runoob.com)

發布時間:2023/12/19 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 菜鸟教程(runoob.com) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django 資源 與 知識 Django中自建腳本并使用Django環境 model中的save()方法說明 filter()用法
2018/11/06 Chenxin

資料說明
Django基礎入門 http://www.liujiangblog.com/blog/36/ 版本2.1.3
Django晉級教程 http://www.liujiangblog.com/course/django/2 版本1.11.6 其中的"綜合篇"里有不少是實際項目會碰到的問題.實戰里有個開源的CMDB.
Django官方教程 https://docs.djangoproject.com/zh-hans/2.1/ 已經出了中文版(但還有很多地方沒有翻譯好) 版本:最新
HTML語法
https://www.cnblogs.com/wanglisong/p/6924886.html
http://www.w3school.com.cn/html/html_jianjie.asp
Django基礎指令
創建Django項目,然后創建應用
python manage.py startapp polls
寫好對應的模型,admin.py,視圖,然后生成DB
python manage.py makemigrations
python manage.py migrate
創建Django的admin賬戶
python manage.py createsuperuser

Django模板語法
2018/12/04
參考
http://www.runoob.com/django/django-template.html
說明
模板不是html語法的概念,是Django專有的概念.
html本身不支持繼承,但Django的模板有繼承的概念.
模板對外鍵的使用,過濾,請參考運維portal系統中的相關代碼"monitor.html".
Django 模板標簽
if/else 標簽
基本語法格式如下:
{% if condition %}
... display
{% endif %}
或者:
{% if condition1 %}
... display 1
{% elif condition2 %}
... display 2
{% else %}
... display 3
{% endif %}
根據條件判斷是否輸出。if/else 支持嵌套。
{% if %} 標簽接受 and , or 或者 not 關鍵字來對多個變量做判斷 ,或者對變量取反( not ),例如:
{% if athlete_list and coach_list %}
athletes 和 coaches 變量都是可用的。
{% endif %}
for 標簽
{% for %} 允許我們在一個序列上迭代。
循環語法是 for X in Y 。
每一次循環中,模板系統會渲染在 {% for %} 和 {% endfor %} 之間的所有內容。
例如,給定一個運動員列表 athlete_list 變量,我們可以使用下面的代碼來顯示這個列表:

{% for athlete in athlete_list %}
{{ athlete.name }}
{% endfor %}

給標簽增加一個 reversed 使得該列表被反向迭代:
{% for athlete in athlete_list reversed %}
...
{% endfor %}
可以嵌套使用 {% for %} 標簽:
{% for athlete in athlete_list %}

{{ athlete.name }}

{% for sport in athlete.sports_played %}
{{ sport }}
{% endfor %}

{% endfor %}
ifequal/ifnotequal 標簽
{% ifequal %} 標簽比較兩個值,當他們相等時,顯示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。
下面的例子比較兩個模板變量 user 和 currentuser :
{% ifequal user currentuser %}

Welcome!

{% endifequal %}
和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標簽:
{% ifequal section 'sitenews' %}

Site News

{% else %}

No News Here

{% endifequal %}
注釋標簽
Django 注釋使用 {# #}。
{# 這是一個注釋 #}
過濾器
模板過濾器可以在變量被顯示前修改它,過濾器使用管道字符,如下所示:
{{ name|lower }} 意思為 {{ name }} 變量被過濾器 lower 處理后,大寫轉換為小寫。
過濾管道可以被套接,即一個過濾器管道的輸出又可以作為下一個管道的輸入: {{ my_list|first|upper }} 以上實例將第一個元素并將其轉化為大寫。
有些過濾器有參數。 過濾器的參數跟隨冒號之后并且總是以雙引號包含。 例如: {{ bio|truncatewords:"30" }} 這個將顯示變量 bio 的前30個詞。
其他過濾器:
addslashes : 添加反斜杠到任何反斜杠、單引號或者雙引號前面。
date : 按指定的格式字符串參數格式化 date 或者 datetime 對象,實例:{{ pub_date|date:"F j, Y" }}
length : 返回變量的長度。
include 標簽
{% include %} 標簽允許在模板中包含其它的模板的內容。
這個例子都包含了 nav.html 模板: {% include "nav.html" %}
模板繼承
模板可以用繼承的方式來實現復用。接下來我們先創建之前項目的 templates 目錄中添加 base.html 文件,代碼如下:
HelloWorld/templates/base.html 文件代碼:

菜鳥教程(runoob.com)

Hello World!

菜鳥教程 Django 測試。

{% block mainbody %}

original

{% endblock %}

以上代碼中,名為 mainbody 的 block 標簽是可以被繼承者們替換掉的部分。所有的 {% block %} 標簽告訴模板引擎,子模板可以重載這些部分。
如hello.html 繼承 base.html,并替換特定 block.hello.html 修改后的代碼如下:
HelloWorld/templates/hello.html 文件代碼:
{%extends "base.html" %} #這行說明 hello.html 繼承了 base.html 文件
{% block mainbody %} #可以看到,這里相同名字的 block 標簽用來替換 base.html 里相應 block。

繼承了 base.html 文件

{% endblock %}
重新訪問地址 http://127.0.0.1:8000/hello,就會輸出"繼承了 base.html 文件".
Django表單處理知識
參考 http://www.runoob.com/django/django-form.html
Django之Form組件的使用
參考 https://docs.djangoproject.com/zh-hans/2.1/topics/forms/ 官網
參考 https://www.cnblogs.com/wupeiqi/articles/6144178.html
Django的Form主要具有一下幾大功能:
* 生成HTML標簽
* 驗證用戶數據(顯示錯誤信息)
* HTML Form提交保留上次提交數據
* 初始化頁面顯示內容
Django中解決Not Found: /favicon.ico報錯
參考: https://blog.csdn.net/HHTNAN/article/details/78549561
在對應的html中的head里添加如下內容,將該圖片文件指向到固定文件夾.
{% load staticfiles %}

django-simple-captcha 驗證碼(圖片驗證)插件使用 以及添加動態ajax刷新驗證
參考: https://blog.csdn.net/tanzuozhev/article/details/50458688
如果當前驗證碼看不清,我們可以刷新一下,這個我們用ajax來做。 jango-simple-captcha本身提供了一個刷新頁面,/refresh 在captcha/urls.py中:
url(r’refresh/$’, views.captcha_refresh, name=’captcha-refresh’)
這里在我們自己的urls.py中可以不做處理,直接使用 /captcha/refresh/ . views.captcha_refresh 源碼:

以下只是源碼介紹不用寫入自己的代碼中

def captcha_refresh(request):
""" Return json with new captcha for ajax refresh request """
if not request.is_ajax(): # 只接受ajax提交
raise Http404
new_key = CaptchaStore.generate_key()
to_json_response = {
'key': new_key,
'image_url': captcha_image_url(new_key),
}
return HttpResponse(json.dumps(to_json_response), content_type='application/json')
通過閱讀源代碼我們發現, views.captcha_refresh 只接受ajax提交,最后返回 key 和 image_url 的json數據,這里的key就是 hashkey, 需要我們寫入id為id_captcha_1的隱藏字段, image_url為驗證碼圖片的新url,這里我們加入ajax刷新,點擊驗證碼圖片即可實現刷新,將以下內容添加到login.html 中即可實現點擊驗證碼圖片自動刷新自身.

Django項目里自建的腳本通過Django訪問DB.自建腳本通過Django來執行.
2019/01/17
一并解決1,2兩個報錯,參加下方"其他說明"->"3"內容.
以下是分步解決的.
1.報錯內容:(沒有環境變量DJANGO_SETTINGS_MODULE)
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
配置方式為: pycharm右上角,進入"Edit Configrations..."->Python->選擇需要單獨運行的腳本->配置Environment variables->如下:
PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=login_regs.settings
其中"DJANGO_SETTINGS_MODULE=login_regs.settings"是額外增加的一行.
2.報錯內容
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
則需要在該腳本的最上方(第一個import上面)添加如下:
import django
django.setup()
其他說明:
1.新加的腳本(或者是通過python manage.py startapp aliyun_ecs 生成的),無需在setting里配置INSTALLED_APPS.因為這個腳本是單獨運行的.
2.該腳本在未啟動Django主項目(比如login_regs未run的時候)也是可以自己運行的.
3.也可以只修改腳本文件,一并解決1,2兩個報錯.解決方法是,在get_ecs_info.py文件(需要運行的獨立腳本)的最上面添加如下代碼(不需要在pycharm右上角修改"Edit Configrations..."):
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "login_regs.settings") # login_regs是主項目,也就是根目錄.
django.setup()

django model中的save()方法 models.Server().save()
2019/01/18
Model.save(force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None)
一般只需
new_server = models.Server() # Server是在models.py里創建的表格
new_server.save()
id和pk
如果一個model里沒有顯示聲明哪一個字段(field)是主鍵(即在某個字段里聲明primary_key=True),則django會自動生成一個名為id的AutoFields作為主鍵。model里的主鍵都有一個別名叫做pk(primary_key的縮寫),無論這個主鍵是自動生成的還是我們指定的。
使用pk和使用主鍵的名字是一樣的效果。
注意1:對于一個要新加入數據庫的model實例,在save()執行之前是無法知道它的id的,因為要算數據庫中已有多少個本model才能算出它的id值。

b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')
b2.id # Returns None, because b doesn't have an ID yet.
b2.save()
b2.id # Returns the ID of your new object.
save()到底是執行insert還是update的說明
force_update和force_insert
這兩個參數一般較少用到,因為執行save()之后,django默認執行的是UPDATE或者INSERT這兩條SQL語句的哪一條,遵循如下算法:
1.如果這個對象已經有主鍵而且主鍵的值是True的(即不是None或者空字符串等),就執行UPDATE。
2.如果沒有主鍵或者這條save()不會update任何字段,那么它就INSERT。
只有在某些特定情況下,需要強制save()執行INSERT或UPDATE時才會使force_update=True或force_insert=True(比如我要求能UPDATE就UPDATE,不能我也不取INSERT,那么我就把這個force_update參數設置為True)。
update_fields
用來指定哪些字段需要更新,別的不更新。默認是None,這樣所有字段都會更新一遍。有時候字段很多而我們只需要更新很少的字段,可以用這個參數來提高一下效率。注意要給它的是一個可迭代對象(比如list等)。如果給它一個空的可迭代對象,那么就什么都不更新(注意和None不同,如果等于None是更新全部字段)。
一旦update_fields參數不使用默認值None,那么這條save()語句就是強制執行UPDATE的。
product.name = 'Name changed again'
product.save(update_fields=['name'])
objects.filter()用法
2019/01/18
示例
多個filter一起使用(多個過濾條件)
def record_delete(): # 其中Server是DB的一張表

# 刪除自動記錄且沒有添加過備注信息的record.2個filter
models.Server.objects.filter(get_mode_type='自動錄入').filter(mark='').delete()
# 刪除自動記錄,且很久都沒有更新過的record(比如大于一周,則說明云平臺上已經沒有該服務器了)
now_today = datetime.datetime.now()
previously_days = datetime.timedelta(days=2)
interval = now_today - previously_days  # 返回值類似 2019-01-12 15:24:11.531584
models.Server.objects.filter(get_mode_type='自動錄入').filter(c_time__lte=interval).delete()    # c_time是DB里的一個字段,__lte是小于等于

使用說明
條件選取querySet的時候,filter表示=,exclude表示!=。如:
host_ip_list = models.Server.objects.exclude(instance_status='stopped').values_list('project_name', 'server_name', 'wan_ip')
querySet.distinct() 去重復
__exact 精確等于 like ‘aaa’ __iexact 精確等于 忽略大小寫 ilike ‘aaa’
__contains 包含 like ‘%aaa%’ __icontains 包含 忽略大小寫 ilike ‘%aaa%’,但是對于sqlite來說,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一個list范圍內
__startswith 以…開頭
__istartswith 以…開頭 忽略大小寫
__endswith 以…結尾
__iendswith 以…結尾,忽略大小寫
__range 在…范圍內
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

Django系統計劃任務 django-crontab計劃任務 自定義命令 三種方式
2019/01/29
參考:
https://www.jianshu.com/p/27f003149090
https://blog.csdn.net/qq_34971175/article/details/79430274
http://wiki.jikexueyuan.com/project/django-chinese-docs-18/6_4_2_Adding-custom-commands.html
直接通過系統cron執行(推薦)

調用aliyun的API/aws的API,將ECS/EC2寫入CMDB

19 * * * * export PYTHONIOENCODING='utf-8' && cd /home/admin/django-cmdb/aliyun_ecs/ && /usr/bin/python3 get_aliyun_ecs_info_linux.py
19 * * * * export PYTHONIOENCODING='utf-8' && cd /home/admin/django-cmdb/aws_ec2/ && /usr/bin/python3 get_aws_ec2_info_linux.py
cat get_aliyun_ecs_info_linux.py

因系統編碼,以及linux下python3調用的時候發生的一些找不到對應模塊等原因,故這個腳本只用于linux.

以下是為了便于python36直接調用本腳本(不通過django-cron和manage.py命令的方式)而加入的.主要為植入當前路徑.

import sys
import os
curPath = os.path.abspath(os.path.dirname(file))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

import django 和 django.setup() 必須放在最上方.否則無法加載配置.就無法使用Django.

import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "login_regs.settings")
django.setup()
...
cat signature_auth_py3_linux.py

因系統編碼,以及linux下python3調用的時候發生的一些找不到對應模塊等原因,故這個腳本只用于linux.

該腳本適用于python3.x版本

本腳本調用的時候可以給一些參數,執行對應的操作

import sys
import os
from six.moves.urllib.parse import quote
from six.moves.urllib.parse import urlencode
import urllib
import base64
import hmac
from hashlib import sha1
import time
import uuid
from optparse import OptionParser
try:
import configparser
except:
from six.moves import configparser
import traceback

公共變量

access_key_id = ''
access_key_secret = ''

定義終端節點地址(服務節點)

handle_server_address = 'https://ecs.aliyuncs.com'
if os.name == 'nt':
CONFIGFILE = os.getcwd() + 'aliyun.ini'
else:
CONFIGFILE = os.getcwd() + '/aliyun.ini'

[Credentials] 是配置文件中的一個章節

CONFIGSECTION = 'Credentials'
cmdlist = '''接口說明請參考線上文檔'''
...

django-crontab實現定時任務
安裝django-crontab庫
這里使用pip安裝即可,在終端輸入以下命令即可 pip-3.6 install django-crontab
在工程里使用django-crontab
在django項目的settings.py的INSTALLED_APPS添加django-crontab,記得將此添加到自建的所有app的最前面.
django-crontab配置
django-crontab可以定時運行自定義命令和函數兩種方式
定時函數
在django項目的settings.py中添加以下命令
CRONJOBS = (
('*/1 * * * *', '你的app名.定時函數所在的py文件名.定時函數名'), # 每一分鐘執行一次你的定時函數
('0 0 1 * *', '你的app名.定時函數所在的py文件名.定時函數名', '> 輸出文件路徑和名稱'), # 定時函數輸出的內容到指定文件(如果該路徑不存在會自動創建)
)
定時命令
CRONJOBS = (
('10 12 * * *', 'django.core.management.call_command', ['要執行的命令']), # 在12點10分執行命令
)
定時任務的操作
python36 manage.py crontab add  添加定時任務 # 當你添加了或者修改的定時任務
python36 manage.py crontab remove 清除定時任務 # 當想刪除當前用戶所有定時任務
python36 manage.py crontab show 顯示定時任務
自定義manage.py運行命令

總結

以上是生活随笔為你收集整理的菜鸟教程(runoob.com)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人网站免费观看 | 日本伊人影院 | 理论黄色片 | 久久99久久99精品中文字幕 | 调教一区二区 | 丰满的人妻hd高清日本 | 国产成年妇视频 | 国产123在线 | 国产精品毛片视频 | 又黄又爽的网站 | 亚洲综合小说 | 日女人免费视频 | 天天操天天干天天爱 | 欧美aⅴ在线观看 | 一级作爱视频 | 国产日本精品视频 | 亚洲亚洲人成综合网络 | 精品熟妇视频一区二区三区 | 黄色香蕉视频 | 国产精品黑丝 | 粉嫩小泬无遮挡久久久久久 | 国产东北女人做受av | 国产精品久久久久久久久免费相片 | 免费看裸体视频网站 | 久久久久亚洲色欲AV无码网站 | 日韩黄色免费 | 欧美一区在线观看视频 | 8050午夜一级毛片久久亚洲欧 | 毛片毛片毛片毛片 | 久久精品视频1 | 蜜臀av午夜精品 | 国产精品免费入口 | 日韩有码专区 | 一区二区三区成人 | 日本理论中文字幕 | 日日干狠狠干 | 伊人论坛 | 无码人妻久久一区二区三区蜜桃 | 男人在线视频 | 蜜臀视频在线观看 | 三上悠亚中文字幕在线播放 | 日本中文字幕网站 | 国产久草视频 | 性感少妇在线观看 | 久久精品成人一区二区三区蜜臀 | www.操com| 男生草女生视频 | free欧美性69护士呻吟 | 亚洲一区在线视频 | 日韩一区二区三区在线视频 | 中文字幕乱妇无码av在线 | 在线观看av国产一区二区 | 无码国产精品高潮久久99 | 小嫩嫩精品导航 | 欧美日韩亚洲精品一区二区 | 亚洲熟女乱色综合亚洲av | 美国毛片av | 亚洲欧美另类国产 | 麻豆国产一区二区三区四区 | 国产成人精品亚洲线观看 | 国产精久久一区二区三区 | 体内精69xxxxxx | 天堂999| 波多野结衣亚洲一区二区 | 99久久九九 | 高清欧美性猛交xxxx黑人猛交 | 男女无套免费视频网站动漫 | 又大又粗又爽18禁免费看 | 亚洲欧美日韩在线一区 | 毛片无码一区二区三区a片视频 | 欧美sm极限捆绑bd | 在线尤物| 久久爱综合 | 日韩网站视频 | 三级一区二区 | 国产在线精品播放 | 天天干夜夜爽 | 夜夜夜综合 | 无码国产色欲xxxxx视频 | 视频精品一区二区 | 天天看天天操 | 一区二区三区四区在线视频 | 免费男女乱淫真视频免费播放 | 久草国产精品视频 | ass日本粉嫩pics珍品 | 亚洲网站在线免费观看 | 天天干妹子 | 国产精品9999 | 成人综合婷婷国产精品久久 | 疯狂做爰的爽文多肉小说王爷 | 日本天堂网在线观看 | a级在线免费观看 | 国产免费一区二区三区网站免费 | 艳母日本动漫在线观看 | 日韩爱爱爱 | 日本一区二区成人 | 精品久久毛片 | 自拍第二页 | 亚色在线|