Skip to content

Latest commit

 

History

History
204 lines (146 loc) · 4.15 KB

Django.md

File metadata and controls

204 lines (146 loc) · 4.15 KB

Django

基于Python的高级Web开发框架,支持python2.7及以上

创建项目后常用指令

启动项目

python manage.py runserver [xxxx]端口可选缺省默认8000

admin

python manage.py createsuperuser

修改settings.py中LANGUAGE_CODE='zh_Hans'

修改admin.py
from . import models
admin.site.register(models.Article)

访问localhost:8000/admin

删除数据库

migrations文件夹只留__init__.py

删除mysql里的database,创建空database:

drop database xxx;
create database xxx;

在django中

python manage.py makemigrations
python manage.py migrate

创建项目

创建初始项目

django-admin startproject xxx

manage.py:项目管理器

wsgi.py:服务器网关接口

urls.py:URL配置文件

settings.py:总配置文件,可更换数据库

__init__.py:声明模块

创建应用

python manage.py startapp xxx
添加到settings.py中的INSTALLED_APPS

migrations:数据迁移模块

admin.py:后台管理系统配置文件

apps.py:当前应用配置

models.py:数据模块

test.py:自动化测试模块

views.py:执行响应的逻辑代码

创建响应

编辑views.py
from django.http import HttpResponse
def xxx(request):
    return HttpResponse("xxxx")

编辑根urls.py
from django.urls import include
添加path('xxx/', include('xxx.urls'))

新建应用的urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('xxx/', views.xxx)
]

编辑模板

在app下创建templates文件夹其下创建app名文件夹

在内层文件夹下创建xxx.html

在views.py中创建渲染函数
def xxx(request):
    return render(request, 'xxx.html', {'key':'value'})
其中value可在html中用{{key}}方式显示传递该字典类型的DTL到前端

连接MySQL

在MySQL中建立database推荐database名和项目名相同

修改settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'HOST': 'localhost',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': 'xxx',
    }
}

运行
python manage.py makemigrations
python manage.py migrate

修改项目__init__.py
import pymysql
pymysql.install_as_MySQLdb()

数据库

建立database

create database tickets;

生成数据表(通过django在msql中建立table)

修改models.py
class Article(models.Model):
    title = models.CharField(max_length=32, default='Title')
    content = models.TextField(null=True)

python manage.py makemigrations [app名]缺省则对所有应用执行生成
python manage.py migrate

查看数据表

python manage.py sqlmigrate app名 id

数据呈现

编辑views.py
from . import models
title = request.POST.get('html_block_name', 'default_value')
models.Article.objects.create(title=title) # 插入方法一
cur_ticket = models.ticket(title=title)
cur_ticket.save() # 插入方法二,此方法可以获得自增主键cur_ticket.id
article = models.Article.objects.get(title='') # 查询一个,在找不到或找到一个以上时会报错,可用try except判断
article = models.Article.objects.get(~Q(title=''))# 不等于
articles = models.Article.objects.filter(title='')# 查询多个,返回一个列表,通过[]取到
articles = models.Article.objects.filter(title__in='')# 查询结果为多个,且查询条件为列表
article = models.Article.objects.get(pk='') # 根据主码查询
articles = models.Article.objects.all() # 查询所有
models.Article.objects.filter(title='').update(content='a') # 更新
models.Article.objects.get(title='').delete() # 删除
models.Article.objects.all().delete() # 删除所有
render(request, 'xxx.html', {'article':article}) # 将数据返回给html

编辑html添加{{article}}

访问URL

浏览器输入localhost:xxxx/app1/

ajax中跨域cors报错

settings.py中添加
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # 加在第一行
    'django.middleware.security.SecurityMiddleware', # 加在第二行
]

CORS_ORIGIN_ALLOW_ALL = True