day7-分頁、上傳圖片、session登入、csrf校檢

weixin_33924312發表於2018-09-18

一、實現分頁功能

1、使用切片實現分頁
#在網頁上得到page
  page_number = int(request.GET.get('page',1))
#得到分頁過後的資料條數
  users = Users.objects.all()[3*(page_number-1):3*page_number]
2、使用Paginator
#在網頁上得到page
page_number = int(request.GET.get('page',1))
#得到Users中所有的使用者資料
users = Users.objects.all()
#使用Paginator實現分頁
#使用Paginator實現按照三條資料分頁
paginator = Paginator(users,5)
#獲取某一個的資訊
page = paginator.page(page_number)

當前頁,頁碼,上一頁,下一頁設定

    <p>當前頁:{{ page.number }}</p>
    <p>頁碼:{% for i in page.paginator.page_range %}
    <a href="{% url 'app:users' %}?page={{ i }}">{{ i }}</a>
    {% endfor %}
    </p>
    <p>
    {%  if page.has_previous %}
    <a href="{% url 'app:users' %}?page={{ page.previous_page_number }}">上一頁</a>
        {% endif %}
    {%  if page.has_next %}
     <a href="{% url 'app:users' %}?page={{ page.next_page_number }}">下一頁</a>
    {% endif %}
    </p>

二、上傳圖片

安裝Pillow處理圖片
在模型中定義icon,upload為圖片上傳後所在路徑
建立資料夾media存放upload
在setting中配置media路徑

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

icon = models.ImageField(upload_to='upload',null=True,verbose_name='頭像')

在註冊頁面寫入

<p>頭像:<input type="file" name = "icon"></p>

然後在form表單內寫入enctype="multipart/form-data"才能提交圖片
進行表單驗證時,獲取表單提交資訊時要寫入request.FILES即

form = Userform(request.POST,request.FILES)

建立儲存使用者時加入icon欄位

icon=request.FILES.get('icon')

上傳圖片展示
在工程目錄下的urls裡面配置

urlpatterns += static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)
在頁面解析圖片
<img src="/media/{{ user.icon }}">

三、cooike和session登入驗證

設定session的值

request.session['user_id'] = user.id

實現登出功能
第一種,刪除session和cookie

request.session.flush()

第二種,獲取session_key的並實現刪除,刪除服務端

session_key = request.session.session_key
request.session.delete(session_key)

四、csrf校檢
在表單提交裡面寫入

{% csrf_token %}

相關文章