Django 项目笔记
Django 环境的搭建
Django 安装
pip install django==2.1.4
Django 创建项目
django-admin startproject mysite
Django 创建应用
python manage.py startapp myapp
Django 启动项目
python manage.py runserver IP:PORT
Django 数据迁移
python manage.py makemigrations
python manage.py migrate
通过Pycharm 创建Django项目
怎么再Django中创建HTML,以及怎样指定它的路由关系
①判断项目是否指定了模板所在的位置
- 首先打开项目所在位置的setting.py 文件,找到它的template哪一项,看它DIR是否有指定模板的位置,如果没有指定,就通过os.path.join(BASE_DIR, 'templates')人为指定。
- 在做表单提交的是否如果遇到了 forbidden 错误,建议注释掉MIDDLEWARE中的'django.middleware.csrf.CsrfViewMiddleware',或者在提交数据的术后加上 {% csrf_token %}
②在template目录下新建HTML文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div class="panel panel-default">
<div class="panel-heading">面板头</div>
<div class="panel-body">面板主题</div>
</div>
</body>
</html>
③在应用所对应views.py文件中添加相应的模板函数
from django.shortcuts import render
def test(request):
return render(request, "my-test.html")
④修改项目下面的urls.py 文件
from django.contrib import admin
from django.urls import path
from video import views
urlpatterns = [
path('admin/', admin.site.urls),
path('my-test/', views.test),
]
引入之前准备的静态文件
- 静态文件GIT地址 https://gitee.com/getcharzp/static-getcat-zhaopin.git
- 将所有的HTML文件先放到 template 文件夹中
- 在项目根目录下面创建一个 static 文件夹,用于放静态资源文件,修改 setting.py 文件
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
调整项目中的路由对应关系,页面中的跳转
使用 {%%},里面可以指定逻辑代码
{% csrf_token %}
使用 {{}},里面只能是变量
{{ person }}
母版的使用
理解:通过建立一个挖过坑的HTML来实现模板继承
例子:
- 建立一个 母版文件的 HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
.header {
width: 100%;
height: 90px;
background-color: #65ccff;
}
</style>
</head>
<body>
<div class="header"></div>
{% block content %}
{% endblock %}
</body>
</html>
- 其他HTML继承这个母版HTML
{% extends 'base.html' %}
{% block content %}
<p>GetcharZp Index</p>
{% endblock %}
数据库配置
- 修改 setting.py 文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名称',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
- 修改在与 setting.py 同级的目录下的 _ init_.py 文件
import pymysql
pymysql.install_as_MySQLdb()
数据库的设计
-
表的设计,应用下面的 models.py 文件
from django.db import models
class User(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
email = models.CharField(max_length=32)
create_time = models.IntegerField()
class Cate(models.Model):
cid = models.AutoField(primary_key=True)
pid = models.IntegerField()
cate_name = models.CharField(max_length=32)
class Position(models.Model):
name = models.CharField(max_length=32)
cid = models.IntegerField(max_length=10)
salary = models.CharField(max_length=32)
address = models.CharField(max_length=32)
duty = models.CharField(max_length=500)
condition = models.CharField(max_length=500)
create_time = models.IntegerField()
-
数据库的迁移
python manage.py makemigrations # 包的创建
python manage.py migrate # 数据同步到数据库中
用户登录注册
- session数据的保存
request.session['username'] = username
- 前端如何检测是否有 session数据
{% if request.session.username %}
- 获取前端提交过来的数据
request.POST.get('username')
request.POST.get('password')
- 数据的查询
User.objects.filter(username=username, password=password)
- 数据的插入
User.objects.create(username=username, password=password, create_time=time.time())
- 数据的更新
User.objects.fileter(id=1).update(username=Getchar)
- 数据删除
User.objects.fileter(id=1).delete()