1.數(shù)據(jù)庫設(shè)計(jì)和django鏈接mysql數(shù)據(jù)庫
1.goods表用來存放商品信息

image
2.user表格用來存放用戶信息

image
3.cart表用來存放購物信息

image
4.sort表存放商品分類

image
5.django鏈接mysql數(shù)據(jù)庫
在文件目錄中找到settings.py文件,將databases的花括號中的django.db.backends.sqlite3 改為django.db.backends.mysql 。密碼PASSWORD一欄加上自己設(shè)置的MySQL的密碼 , NAME 一欄是建立的數(shù)據(jù)庫的名字,USER一欄是創(chuàng)建數(shù)據(jù)庫的用戶名,MySQL默認(rèn)為root。核心代碼如下:
DATABASES ={
'default': {
#鏈接自己的mysql
'ENGINE': 'django.db.backends.mysql',
'NAME': "second_school",
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': 3306,
}
}
2.反向生成model類
利用Django自帶的功能反向生成model類,代碼如下:
python manage.py inspectdb
把生成的模板導(dǎo)入app,代碼如下,也可以黏貼過來
python manage.py inspectdb > app/models.py
中間有一些細(xì)節(jié)我就不寫了自行百度
3.登錄頁面后臺(tái)
登錄頁面用了ajax,views部分代碼:寫ajax必須寫@csrf_exempt這個(gè)是防止跨域攻擊用的
@csrf_exempt
def login(request):
flag = 0
user = User()
if request.method == 'POST':
user_email = request.POST.get('email')
user_password = request.POST.get('password')
if user_email == 'supper@qq.com' and user_password == '123456':
flag = 5
return HttpResponse(json.dumps(flag))
else:
try:
user = User.objects.get(email=user_email)
print(user.__str__())
except Exception as e:
print(e.__repr__())
flag = -1
if user is None: # 用戶名不存在
return HttpResponse(json.dumps(flag))
if user.password == user_password: # 密碼相等,登錄成功
flag = 1
request.session['nick_name'] = user.nick_name
request.session['userid'] = user.id
else: # 密碼錯(cuò)誤
flag = 2
return HttpResponse(json.dumps(flag))
ajax部分代碼
function login() {
if ($("#email").val() == "") {
layer.msg("請輸入郵箱");
return;
}
if ($("#password").val() == "") {
layer.msg("請輸入密碼");
return;
}
$.ajax({
type: "POST",
url: "login",
data: {"email": $("#email").val(), "password": $("#password").val()},
dataType: "json",
success: function (data) {
console.log(data);
if (data == 0) {
layer.msg("請先注冊");
}
else if (data == 2) {
layer.msg("密碼錯(cuò)誤");
}
else if (data == 5) {
layer.msg('超級管理員登陸', {
offset: ['50%'],
time: 2000 //2秒關(guān)閉(如果不配置,默認(rèn)是3秒)
}, function () {
location.href = "admin/goods";
});
}
else if (data == 1) {
layer.msg('登錄成功', {
offset: ['50%'],
time: 2000 //2秒關(guān)閉(如果不配置,默認(rèn)是3秒)
}, function () {
location.href = "index";
});
}
},
error: function () {
layer.msg("發(fā)生未知錯(cuò)誤");
}
});
}
4.注冊頁面后臺(tái)
def register(request):
flag = ""
if request.method == 'POST':
username = request.POST['username']
email = request.POST['email']
password1 = request.POST['password1']
password2 = request.POST['password2']
if username == "":
flag = "請輸入用戶名 "
else:
if email == "":
flag = "必須輸入郵箱 "
else:
if password1 == "":
flag = "請輸入密碼 "
return render(request, 'register.html', {"flag": flag})
else:
if password2 == "":
flag = "請?jiān)俅屋斎朊艽a "
return render(request, 'register.html', {"flag": flag})
else:
if password1 == password2:
flag = ""
twz = User()
twz.nick_name = username
twz.email = email
twz.password = password1
try:
twz.save()
return HttpResponseRedirect("login_page")
except Exception:
print(Exception)
else:
flag = "兩次密碼輸入不一致"
return render(request, 'register.html', {"flag": flag})
今天先到這里明天繼續(xù)更新