超详细django建站过程,含数据库操作
准备
-
安装django
pip install django
-
创建项目
指定文件夹下
建立项目 django --admin startproject 项目名
创建应用名:python manage.py startapp 应用名
后续基于已制作好的project演示项目名 myproj,应用名myapp
配置(setting.py)
- 注册
- 配置数据库(mysql)以及模板与静态文件工作目录
使用mysql数据库需在初始化中导入pymysql相关配置项,
在__init__.py中导入
import pymysql
pymysql.install_as_MySQLdb()
静态文件工作目录
用于放html等网页静态文件
模型(model.py)
通过类操作数据库,建立两张表
执行命令:
生成迁移文件:python manege.py makemigrations
生成迁移表:pyhon manege.py migrate
from django.db import models
# Create your models here.
class PersonInfo(models.Model):
user = models.CharField(max_length=20)
pw = models.CharField(max_length=10)
class Pic(models.Model):
img = models.CharField(max_length=10)
adress = models.CharField(max_length=25)
登录数据库查看
添加用户名与密码,用于登录验证;
insert into myapp_personinfo values(0,'user','password');
视图(views.py)
具体html页面请自行百度套模板,由于博主的页面做的烂,就不提供了,只写关于django的python代码
login页面
def login(request):
if request.session.has_key('islogin'):
# 用户已登录, 跳转到主页面
return redirect('/index')
else:
#判断用户名记住状态
if 'username' in request.COOKIES:
username = request.COOKIES['username']
else:
username = ''
跳转验证页面
return render(request, "login.html", {'username':username})
验证页面(login_check)
def login_check(request):
#从浏览器提交的表单获取数据
username = request.POST.get('username')
password = request.POST.get('password')
remember = request.POST.get('remember')
print(username)
print(password)
#查询数据库并验证
info = PersonInfo.objects.get(user=username)
if password == info.pw:
#验证通过跳转主页
response = redirect('/index')
if remember == 'on':
response.set_cookie('username', username, max_age=180)
request.session['islogin'] = True
request.session['username'] = username
return response
否则跳转登录页面
return redirect('/login')
配置路由(urls.py)
-
现在项目文件夹下(myproj)的urls.py内添加应用路由
配置
-
在应用目录下新建urls.py
配置添加页面路由
主页加密处理
def login_required(view_func):
'''登录判断装饰器'''
def wrapper(request, *view_args, **view_kwargs):
# 判断用户是否登录
if request.session.has_key('islogin'):
# 用户已登录,调用对应的视图
return view_func(request, *view_args, **view_kwargs)
else:
# 用户未登录,跳转到登录页
return redirect('/login')
return wrapper
主页返回函数
@login_required
def index(request):
return render(request, "index.html")
演示
具体html页面制作非我所长,自行百度套模板,将制作好的html文件置于templates中即可
在命令行输入
python manage.py runserver