Django项目
一.项目小名称 创建django项目时生成
1.__init__.py 告诉django使用pymysql连接mysql数据
告诉django使用pymysql连接mysql数据
import pymysql
pymysql.install_as_MYSQLdb()
2.settings.py 配置文件
需要修改的几个地方:
@1.关于静态文件static
静态文件:STATIC_URL = "/static/"
添加静态文件目录:
STATICFILES_DIRS = [os.path.join(BASE_DIR,"static"]
@2.网页提交的请求方式:post请求:
注释掉MIDDLEWARE中的 django.middleware.csrf.CsrfViewMiddleware
@3.创建app时 注册过程中 如果不是创建Django时创建的app
在配置文件(settings)中 INSTALLED_APPS
方法1:在列表中添加 app名称
方法2:在列表中添加 app名称.apps.APP名称config
eg:INSTALLED_APPS = [
... #原本的内容
...
'app01', #方法1
'app01.apps.App01Config', # 方法2 推荐写法]
@4.创建好数据库之后,进行数据库配置 DATABASES
修改ENGINE NAME
添加POST: ----->数据库的IP地址
添加PORT: ------端口
添加USER: ------->数据库账户
添加PASSWORD: ------->数据库密码
eg:DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 引擎
'NAME': 'django_day53', # 名称
'HOST': '127.0.0.1', # IP地址
'PORT': 3306, # 端口
'USER': 'root', # 用户名
'PASSWORD': '123456' # 密码
}}
@5.命令行创建Django时,修改TEMPLATES
命令行创建django项目时需要修改:'DIRS':[os.path.join(BASE_DIR, 'templates')]
@6.部署时:修改ALLOWED_HOSTS
3.urls.py 请求的地址和处理函数对应关系
函数主逻辑在app中的views中,所以对应关系的时候需要引入app模块
eg:
from django.conf.urls import url
from django.contrib import admin
from app_day53 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),]
4.wsgi.py
二.static html页面的渲染文件 (自己建的)
css
js
img
plugins
三.app
1.migrations 创建django项目时生成 保存models变化
__init__.py
2.__init__.py
3.admin.py admin组件相关 创建django项目时生成
admin组件相关
4.apps.py app配置文件
app配置文件
eg:(自动生成的,在注册时修改好settings中的INSTALLED_APPS后自动修改)
from django.apps import AppConfig
class AppDay53Config(AppConfig):
name = 'app_day53'
5.moddels.py 跟数据库相关 通过类去建表
1.在app下的models.py中创建数据库的表
class 表名(models.Model):
字段名 = moddels.字段数据数据类型(长度)
eg:
class User(models.Model):
username = models.CharField(max_length=32) # varchar(32)
password = models.CharField(max_length=32)
6.tests.py 单元测试
7.views.py 函数 主逻辑 urls中对应的函数逻辑
注意点:
函数参数为request
request:
@1.request.method 请求方式
@2.request.POST from表单提交POST请求的数据
request.POST.get()
返回值:
from django.shortcuts import render,redirect,HttpResponse
render(参数,"HTML文件")---->返回一个完整的html页面
HttpResponse("内容")------>返回一个字符串
redirect("重定向的地址")----> 1.地址是自己的地址:/地址/ 2.返回一个其他的网址
eg:
from django.shortcuts import render,redirect,HttpResponse
from app_day53 import models
def login(request):
# 如果是请求方式是post
if request.method == "POST":
# 获取input框内的内容
username = request.POST.get("username")
password = request.POST.get("password")
print(username,type(username))
print(password,type(password))
# #将获取到内容进行校验(简易版 无拓展性)
# if username == "大王" and password == "123":
# return redirect("https://weibo.com/")
# return render(request,"login.html")
# 将获取的内容进行校验(与数据库里的数据进行校验)
if models.User.objects.filter(username=username,password=password):
return redirect("https://weibo.com/")
return render(request,"login.html")
四.templates
html页面 urls中对应关系的html页面 ,pycharm创建Django项目直接创建好,命令行创建Django项目需要自己创建,并且在settings中修改配置TEMPLATES
eg:
login.html
五.manage.py 解析命令 创建django项目时生成
关于命令行内的一些语法:(推荐用该方法 而不是通过pycharm创建项目)
1.下载: pip install django==1.11.20
pip install django==1.11.20 -i 源
卸载: pip uninstall django
2.创建项目:
django-admin startproject 项目名
3.启动项目:
python manage.py runserver
python manage.py runserver 80
python manage.py runserver 0.0.0.0:80
4.创建app
python manage.py startapp app名称
5.数据库迁移:
python manage.py makemigratinos 记录modele变化记录
python manage.py makemigrate 把变更的记录同步到数据库中