django-項目開發筆記. 開發版本號1.11.8[pip3 install django==1.11.8] +layer使用

  1. 登錄驗證問題
    1.1 使用django自帶的登錄驗證功能
    我這裏對比的是是django庫中的,auth_user的表;
    post發送過來的賬號密碼對比;
#導入驗證的模塊
from django.contrib.auth import authenticate,logout,login
def login(request):
	username=request.POST['username']
	password=request.POST['pwd']
	user=authenticate(username=username,password=password)
	if user is not None:
		print("登錄成功!")
		# 記錄登錄成功的狀態
		login(request,user)
	else:
		print("登錄失敗!")
1.2 在views.py中,獲取已登錄狀態的username
def *_views(request):
	show_name=request.user.username
1.3 使用django自帶的重定向,未登錄則跳轉至登錄頁
#導入模塊,裝飾器使用
from django.contrib.auth.decorators import login_required
@login_required()
def index_views(request):
	return render(request,'index.html',locals())

1.4 後臺想前端傳送html文本,前端只顯示源碼怎麼辦

def test(requets):
	....
	message="<div>每天跑步</div>"
	return render(request,'Notice_show.html',locals())

#前端顯示
# 需要增加 |safe纔行
span style="background-color:rgba(255,255,255,0)">{{ message |safe}}</span>

1.5 ajax調用的坑

// 無法正常返回 true/false,得到的數據確實undefined
// 原因如下,ajax是一個方法,也就是下面函數notice_delete方法中的方法
// notice_delete無法在獲取ajax的return 值
// 解決辦法是 現在ajax中定義記錄一個值,然後在ajax外部,notice_delete內部 return ajax內部定義的值,即可
// 網上有建議關閉ajax的異步,解釋:異步,有時候網絡延遲之類,會仍未返回對應值,我們獲取的話會得到undefined[這行有待驗證]
// 函數示例,刪除請求
function notice_delete(msg_id){
    $.ajax({
    			// 刪除接口api
                url: '/index/notice_del',
                type: 'GET',
                // headers:{"X-CSRFToken":$.cookie('csrftoken')},
                data: {
                    //刪除對象的表示
                    msg_id: msg_id,
                },
                success: function (data) {
                    // alert(data['status'])
                    // 登錄失敗!函數
                    if (data['status'] == 1) {
                        layer.msg("刪除失敗!")
                        rs= false
                    }else if(data.status==2){
                        window.location.reload()
                        layer.msg("您無權限刪除!")
                        rs =  false
                    }
                    else {
                        //登錄成功!跳轉到相應主頁
                        console.log("刪除成功!")
                        // window.location.reload()
                        rs= true
                    }
                }
            })
    return rs
}

1.6 無法修改數據中的外鍵?

# 是無法直接修改的
# 例如Notic_table表中的關聯字段的deparment_type,關聯表deparment的字段id
# 我們是無法直接寫入關聯字段的,需要在deparment中查詢一遍才能寫入,否則會報錯
msg_show_type=request.GET.get("msg_show_type")
# Deparment_table是表deparment在models.py的類名
part_id = Department_table.objects.get(id=msg_show_type)
# Notice_message是表Notic_table在models.py中的類名
Notice_message.objects.filter(id=msg_id).update(type_id=msg_type,...,show_type_id=part_id)
# 這樣子才能更新外鍵字段,寫入也是

1.7 ORM中models的表在adimin註冊,打開表格報錯

#models.py
class Notice_message(models.Model):
    ...
    type= models.ForeignKey(to="typeOfNotice",to_field="name")
    message=models.TextField(verbose_name="通知內容")
    def __str__(self):
        return self.type
#admin.py
admin.site.register(Notic_message)

#admin界面中,打開這個表格管理
#頁面報錯
#選擇return self.type外鍵報錯,重新選擇其他非外鍵即可

layer部分[js]點擊這==>>官方文檔

layer.confirm('真的刪除行麼', function(index){
    //確認框,點擊確認繼續執行
    alert("開心跑步每一天")
});

// 關閉當前彈出層
var index = parent.layer.getFrameIndex(window.name); //獲取窗口索引
parent.layer.close(index);

// 小提示
layer.msg("小彈窗口顯示消息")

項目踩坑記錄
1.文字提交報錯?數據包超過uwsgi設置大小
在uwsgi_django.ini文件中增加

buffer-size = 65536
退出保存重啓即可

echarts的問題貼
軸參數過多怎麼辦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章