国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python學(xué)習(xí)筆記_進階篇(四)_django知識(三)

這篇具有很好參考價值的文章主要介紹了Python學(xué)習(xí)筆記_進階篇(四)_django知識(三)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本章內(nèi)容:

  • Django 發(fā)送郵件
  • Django cookie
  • Django session
  • Django CSRF

Django 發(fā)送郵件

我們常常會用到一些發(fā)送郵件的功能,比如有人提交了應(yīng)聘的表單,可以向HR的郵箱發(fā)郵件,這樣,HR不看網(wǎng)站就可以知道有人在網(wǎng)站上提交了應(yīng)聘信息。今天我們嘗試用django發(fā)送郵件做嘗試

1、配置相關(guān)參數(shù)settings

往settings添加下面幾行數(shù)據(jù)

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = False
# 郵箱服務(wù)器
EMAIL_HOST = 'smtp.163.com'
# 端口號
EMAIL_PORT = 25
# 發(fā)件郵箱賬號
EMAIL_HOST_USER = 'zhangyanlin8851@163.com'
# 發(fā)件郵箱密碼
EMAIL_HOST_PASSWORD = '郵箱密碼'
# 發(fā)件人
DEFAULT_FROM_EMAIL = 'zhangyanlin<zhangyanlin8851@163.com>'

下面是一些常用的郵箱參數(shù):

  • 163 郵箱
  • 126 郵箱
  • QQ 郵箱

2、官方事例

2.1、先看下官方給的例子

from django.core.mail import send_mail
 
send_mail('Subject here', 'Here is the message.', 'from@example.com',
    ['to@example.com'], fail_silently=False)

2.2、發(fā)送多個郵件

from django.core.mail import send_mass_mail
 
message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com'])
message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com'])
 
send_mass_mail((message1, message2), fail_silently=False)

3、發(fā)送郵件

 from django.shortcuts import render,HttpResponse
from django.conf import settings
from django.core.mail import EmailMultiAlternatives

def email(request):
    subject = '來自張巖林的問候'

    text_content = '這是一封重要的郵件.'

    html_content = '<p>這是一封<strong>重要的</strong>郵件.</p>'

    from_email = settings.DEFAULT_FROM_EMAIL

    msg = EmailMultiAlternatives(subject, text_content, from_email, ['75501664@qq.com'])

    msg.attach_alternative(html_content, "text/html")

    msg.send()

    return HttpResponse('OK')

寫完這段代碼訪問以下相對應(yīng)得URL可以看看郵件有沒有發(fā)送成功喲

Django Cookie

1、獲取cookie

 # 方式一
request.COOKIES['key']
# 方式二
request.COOKIES.get('key')
# 方式三
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
# 參數(shù):
    default: 默認值
    salt: 加密鹽
    max_age: 后臺控制過期時間

2、設(shè)置cookie

rep = HttpResponse(...) 或 rep = render(request, ...)
 
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt ='加密鹽',...)
    參數(shù):
        key,              鍵
        value='',         值
        max_age=None,     超時時間
        expires=None,     超時時間(IE requires expires, so set it if hasn't been already.)
        path='/',         Cookie生效的路徑,/ 表示根路徑,特殊的:跟路徑的cookie可以被任何url的頁面訪問
        domain=None,      Cookie生效的域名
        secure=False,     https傳輸
        httponly=False    只能http協(xié)議傳輸,無法被JavaScript獲?。ú皇墙^對,底層抓包可以獲取到也可以被覆蓋)

Django Session

一、session使用

     def index(request):
        # 獲取、設(shè)置、刪除Session中數(shù)據(jù)
        request.session['k1']
        request.session.get('k1',None)
        request.session['k1'] = 123
        request.session.setdefault('k1',123) # 存在則不設(shè)置
        del request.session['k1']
 
        # 所有 鍵、值、鍵值對
        request.session.keys()
        request.session.values()
        request.session.items()
        request.session.iterkeys()
        request.session.itervalues()
        request.session.iteritems()
 
        # 用戶session的隨機字符串
        request.session.session_key
 
        # 將所有Session失效日期小于當(dāng)前日期的數(shù)據(jù)刪除
        request.session.clear_expired()
 
        # 檢查 用戶session的隨機字符串 在數(shù)據(jù)庫中是否
        request.session.exists("session_key")
 
        # 刪除當(dāng)前用戶的所有Session數(shù)據(jù)
        request.session.delete("session_key")

二、session種類

Django中默認支持Session,其內(nèi)部提供了5種類型的Session供開發(fā)者使用:

  • 數(shù)據(jù)庫(默認)
  • 緩存
  • 文件
  • 緩存+數(shù)據(jù)庫
  • 加密cookie

1、數(shù)據(jù)庫Session

Django默認支持Session,并且默認是將Session數(shù)據(jù)存儲在數(shù)據(jù)庫中,即:django_session 表中。

配置 settings.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 引擎(默認)
     
    SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)
    SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路徑(默認)
    SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默認)
    SESSION_COOKIE_SECURE = False                            # 是否Https傳輸cookie(默認)
    SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http傳輸(默認)
    SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默認)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否關(guān)閉瀏覽器使得Session過期(默認)
    SESSION_SAVE_EVERY_REQUEST = False                       # 是否每次請求都保存Session,默認修改之后才保存(默認)

2、緩存Session

 配置 settings.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
    SESSION_CACHE_ALIAS = 'default'                            # 使用的緩存別名(默認內(nèi)存緩存,也可以是memcache),此處別名依賴緩存的設(shè)置
 
    SESSION_COOKIE_NAME = "sessionid"                        # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串
    SESSION_COOKIE_PATH = "/"                                # Session的cookie保存的路徑
    SESSION_COOKIE_DOMAIN = None                              # Session的cookie保存的域名
    SESSION_COOKIE_SECURE = False                             # 是否Https傳輸cookie
    SESSION_COOKIE_HTTPONLY = True                            # 是否Session的cookie只支持http傳輸
    SESSION_COOKIE_AGE = 1209600                              # Session的cookie失效日期(2周)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                   # 是否關(guān)閉瀏覽器使得Session過期
    SESSION_SAVE_EVERY_REQUEST = False                        # 是否每次請求都保存Session,默認修改之后才保存

3、文件Session

 配置 settings.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎
    SESSION_FILE_PATH = None                                    # 緩存文件路徑,如果為None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir()                                      
  
    SESSION_COOKIE_NAME = "sessionid"                          # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串
    SESSION_COOKIE_PATH = "/"                                  # Session的cookie保存的路徑
    SESSION_COOKIE_DOMAIN = None                                # Session的cookie保存的域名
    SESSION_COOKIE_SECURE = False                               # 是否Https傳輸cookie
    SESSION_COOKIE_HTTPONLY = True                              # 是否Session的cookie只支持http傳輸
    SESSION_COOKIE_AGE = 1209600                                # Session的cookie失效日期(2周)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False                     # 是否關(guān)閉瀏覽器使得Session過期
    SESSION_SAVE_EVERY_REQUEST = False                          # 是否每次請求都保存Session,默認修改之后才保存

4、緩存+數(shù)據(jù)庫Session

 數(shù)據(jù)庫用于做持久化,緩存用于提高效率
 
配置 settings.py
 
    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 引擎

5、加密cookie Session

 配置 settings.py
     
    SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎

6、session自定義驗證登錄,裝飾器

 def login(func):
    def wrap(request, *args, **kwargs):
        # 如果未登陸,跳轉(zhuǎn)到指定頁面
        if request.path == '/index/':
            return redirect('/login/')
        return func(request, *args, **kwargs)
    return wrap

Django CSRF

一、簡介

django為用戶實現(xiàn)防止跨站請求偽造的功能,通過中間件 django.middleware.csrf.CsrfViewMiddleware 來完成。而對于django中設(shè)置防跨站請求偽造功能有分為全局和局部。

全局:

中間件 django.middleware.csrf.CsrfViewMiddleware

局部:

  • @csrf_protect,為當(dāng)前函數(shù)強制設(shè)置防跨站請求偽造功能,即便settings中沒有設(shè)置全局中間件。
  • @csrf_exempt,取消當(dāng)前函數(shù)防跨站請求偽造功能,即便settings中設(shè)置了全局中間件。

注:from django.views.decorators.csrf import csrf_exempt,csrf_protect

二、應(yīng)用

1、普通表單

 veiw中設(shè)置返回值:
   return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))  
     或者
    return render(request, 'xxx.html', data)
  
html中設(shè)置Token:
  {% csrf_token %}

2、ajax

view.py

from django.template.context import RequestContext
# Create your views here.
    
def test(request):
  
    if request.method == 'POST':
        print request.POST
        return HttpResponse('ok')
    return  render_to_response('app01/index.html',context_instance=RequestContext(request))

index.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    {% csrf_token %}
  
    <input type="button" onclick="Do();"  value="Do it"/>
  
    <script src="/static/plugin/jquery/jquery-1.8.0.js"></script>
    <script src="/static/plugin/jquery/jquery.cookie.js"></script>
    <script type="text/javascript">
        var csrftoken = $.cookie('csrftoken');
  
        function csrfSafeMethod(method) {
            // these HTTP methods do not require CSRF protection
            return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
        }
        $.ajaxSetup({
            beforeSend: function(xhr, settings) {
                if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                    xhr.setRequestHeader("X-CSRFToken", csrftoken);
                }
            }
        });
        function Do(){
  
            $.ajax({
                url:"/app01/test/",
                data:{id:1},
                type:'POST',
                success:function(data){
                    console.log(data);
                }
            });
  
        }
    </script>
</body>
</html>

注:原文出處http://www.cnblogs.com/wupeiqi/articles/5237704.html文章來源地址http://www.zghlxwxcb.cn/news/detail-667281.html

到了這里,關(guān)于Python學(xué)習(xí)筆記_進階篇(四)_django知識(三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python學(xué)習(xí)筆記_實戰(zhàn)篇(二)_django多條件篩選搜索

    Python學(xué)習(xí)筆記_實戰(zhàn)篇(二)_django多條件篩選搜索

    多條件搜索在很多網(wǎng)站上都有用到,比如京東,淘寶,51cto,等等好多購物教育網(wǎng)站上都有,當(dāng)然網(wǎng)上也有很多開源的比樓主寫的好的多了去了,僅供參考,哈哈 先來一張效果圖吧,不然幻想不出來是什么樣的,前端樣式很low,畢竟主要是說后臺的嘛,前端為了簡單測試就簡

    2024年02月12日
    瀏覽(24)
  • Python學(xué)習(xí)筆記-Django框架基礎(chǔ),APP,數(shù)據(jù)模型,后臺管理,路由

    Python學(xué)習(xí)筆記-Django框架基礎(chǔ),APP,數(shù)據(jù)模型,后臺管理,路由

    Django框架是Python的常用web框架,遵循 MVC 設(shè)計模式的框架,采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時的

    2024年02月16日
    瀏覽(20)
  • 后悔沒早學(xué)這份Python神級文檔!2023最新入門到進階核心知識點學(xué)習(xí)文檔!

    后悔沒早學(xué)這份Python神級文檔!2023最新入門到進階核心知識點學(xué)習(xí)文檔!

    如今學(xué) Python 的程序員越來越多,甚至不少人會把 Python 當(dāng)作第一語言來學(xué)習(xí)。不過盡管 Python 功能強大上手輕松,但并不代表它的學(xué)習(xí)曲線不陡峭,得來全不費工夫。 當(dāng)推開 Python 的大門,你會發(fā)現(xiàn) Python 入門簡單但精通很難??此普Z法記得滾瓜爛熟,但一進入實際項目,就

    2024年02月06日
    瀏覽(28)
  • Python學(xué)習(xí)筆記_進階篇(一)_淺析tornado web框架

    Python學(xué)習(xí)筆記_進階篇(一)_淺析tornado web框架

    1、tornado概述 Tornado就是我們在 FriendFeed 的 Web 服務(wù)器及其常用工具的開源版本。Tornado 和現(xiàn)在的主流 Web 服務(wù)器框架(包括大多數(shù) Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數(shù)以千計的

    2024年02月12日
    瀏覽(21)
  • Python進階篇(一)-- Django快速上手

    Python進階篇(一)-- Django快速上手

    ????????Web框架,就是用于開發(fā)Web服務(wù)器端應(yīng)用的基礎(chǔ)設(shè)施,說得通俗一點就是一系列封裝好的模塊和工具。事實上,即便沒有Web框架,我們?nèi)匀豢梢酝ㄟ^socket或CGI來開發(fā)Web服務(wù)器端應(yīng)用,但是這樣做的成本和代價在商業(yè)項目中通常是不能接受的。通過Web框架,我們可以化

    2024年02月01日
    瀏覽(18)
  • 【Python】【進階篇】1、Django是什么?

    【Python】【進階篇】1、Django是什么?

    Django 是使用 Python 語言開發(fā)的一款免費而且開源的 Web 應(yīng)用框架。由于 Python 語言的跨平臺性,所以 Django 同樣支持 Windows、Linux 和 Mac 系統(tǒng)。 在 Python 語言熾手可熱的當(dāng)下,Django 也迅速的崛起,在 Web 開發(fā)領(lǐng)域占有一席之地。基于 Python 開發(fā)的框架除了 Django 外,還有可以實現(xiàn)

    2023年04月23日
    瀏覽(25)
  • 【Python】【進階篇】30、Django模板繼承精講

    【Python】【進階篇】30、Django模板繼承精講

    在本節(jié)我們講述模板語言中最后一個知識點,也是最重要的,那就是模板繼承。模板繼承和 Python 語言中類的繼承含義是一樣的,在 Django 中模板只是一個文本文件,如 HTML,XML,CSV等文件格式。那模板繼承到底是是什么呢?如何在 Django 中使用它呢?讓我們一起一探究竟。 模

    2024年02月04日
    瀏覽(23)
  • 【Python】【進階篇】24、Django if標簽詳解

    【Python】【進階篇】24、Django if標簽詳解

    本節(jié)繼續(xù)講解 Django 的模板語言,Django 內(nèi)置了許多標簽用于簡化模板的開發(fā)過程,同時 Django 也支持自定義標簽,這極大的方便了 Web開發(fā)者,下面我們依次進行介紹。 Django 的模板系統(tǒng)對標簽的解釋是在渲染的過程中提供相應(yīng)的邏輯,比如Python 語言中 if…else 語句、with 語句、

    2024年02月03日
    瀏覽(18)
  • 【Python】【進階篇】14、Django創(chuàng)建第一個項目

    【Python】【進階篇】14、Django創(chuàng)建第一個項目

    在上一章中,我們完成了開發(fā)環(huán)境的搭建工作。 本章我們將學(xué)習(xí)如何創(chuàng)建 Django 項目以及 Django 項目的初始化,我們將創(chuàng)建一個名為 BookStore 的 Django 項目,用此項目來講解 Django 框架的部分知識,通過這個項目我們將一起打開 Django 世界的大門。 1) BookStore項目創(chuàng)建 我們創(chuàng)建一

    2024年02月02日
    瀏覽(17)
  • 【Python】Django 基礎(chǔ)知識

    【Python】Django 基礎(chǔ)知識

    提示:閱讀本章之前,請先閱讀目錄 默認端口:8000 如果想指定端口 瀏覽器,發(fā)起請求,請求路徑:http://localhost:8000/index django,接受到瀏覽器請求,去讀取urls.py文件 urls文件里面的urlpatterns,判斷當(dāng)前的index,是否包含,不包含則統(tǒng)一轉(zhuǎn)404,如包含,則根據(jù)django自己封裝的

    2024年02月09日
    瀏覽(62)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包