Django--基础知识

安装

安装:
pip3 install django -i https://pypi.doubanio.com/simple/

查看:
django-admin


创建项目

pycharm中可直接创建

或者命令行:django-admin startproject priject_name


运行Django:python3 manage.py runserver 浏览器打开有小火箭即成功

创建app:python3 manage.py startapp app_name

pycharm: debug运行 :edit可设置ip和端口

Django

配置目录

与Django一样名字的目录为配置目录

urls:各种链接,功能的实现,路由URL
1.path(‘地址栏取名’,相关函数)
例如:path('hello/', views.hello_world)
2.需要使用import调用函数所在文件 调用的为views中的函数
例如:from app1 import views
settings:
1.allowed_hosts(允许访问的IP)bug:同一局域网里IP可随意访问
2.templates:模版 ‘dirs’:确认html放置的文件夹
例如:'DIRS': [os.path.join(BASE_DIR, 'templates')]
base_dir:该项目的路径

app操作

自己建立的app包中:

views:创建函数
1.httpresponse函数:创建报文内容 用于return HttpResponse(‘html语句’) 需要使用import导入该函数
2.requests参数:创建函数时必须加上该参数,用于接收数据等便于使用
3.render(re参数,html位置—>直接html名,参数dict) :将其发送给浏览器

文件发送

html:
1.创建放置html文件夹
2.确认文件夹位置:settings 2 templates中
3.书写html
4.编写调用函数 views 3
5.urls增加该网页 urls 1,2

css/js/images(静态文件访问):
1.在编写的html中增加
<head>中加:
激活:
{% load static %}
自动生成静态文件链接:
<link rel="stylesheet" href='{% static "css.css" %}'>
html中的{{}}
<li>{{ age }}</li>
编写views中的函数内容时可以将{{}}中的参数以dict的形式发送过来并替换其中的字段
2.创建css js文件夹
3.settings添加:
1.设置访问url的路径(网址名):STATIC_URL = '/static/'
2.确认位置:STATICFILES_DIRS = [os.path.join(BASE_DIR, “html存放路径”),]


4.配置urls:
from django.conf import settings 调用上面的设置
from django.conf.urls.static import static 调用该函数
urlpatterns = [
]+static(settings.STATIC_URL)
5.书写css js images
6.浏览器访问:/static/css.css
7.浏览器访问对应html便可以

数据库连接

1.与settings在相同文件夹下创建:my.cnf普通文件

# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8mb4

2.settings设置:databases 中将本身数据库配置替换成mysql的配置代码

# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': os.path.join(base_dir,‘django_s’,’my.cnf’),
},
}
}

3.安装pymysql :

pip install pymsql 

// pycharm/preferences/project.django_s/

4.Django使用mysql:settings同级的__init__中增加代码:

		
(1).__init__中代码:

import pymysql
pymysql.version_info(2,0,0) <—版本报错问题解决 无可不修改
pymysql.install_as_MySQLdb()

(2).在external library//site-packages/django/db/backends/mysql/operations
中将与下面5 1对应修改146行 可以先运行会自定跳到该错误这里修改即可

last_executed_query中query.decode改成encode

数据库操作

1.命令行:在manage.py同级目录下执行

python3 manage.py migrate   —>在mysql中直接创建django内置的表 

(1).出现’decode’:在 external library/python 3.7/site-packages/django/db/backends/mysql/operations
last_executed_query中query.decode改成encode (直接vim修改)

2.orm:通过对象操作数据库

(1)在views同级的models.py中编写定义自己的数据库表:即class创建

例如:创建一个文章发布的数据库
score = models.FloatField(default = 0,verbose_name=‘电影评分’)
class Article(models.Model):
title = models.CharField(max_length=255) #文章标题
punish_time = models.DateTimeField() #文章发布时间
author = models.CharField(max_length=20) #文章作者
text = models.CharField(max_length=2000) #文章内容

def __str__(self):
return self.title (admin中直接以title字段显示)

(2)在settings:

installed_apps=[‘添加自己创建的app,即views所在文件夹名’ 例:’app1’]

(3)生成数据库表:命令行执行:

1.python3 manage.py makemigrations    (会在migrations文件夹下生成一个数据库迁移文件) 
2.python3 manage.py migrate (根据(3)生成的建表文件在数据库中建表)

注意:1执行成功的迁移文件会在数据库中django_migrations表中也创建一个该记录  
        必须同时存在才行 不然会一直报错:table
解决:
    (1)删除migrations中的相关文件 再删除数据库表中的对应的记录 重新执行上述两个命令

(4)数据库表数据读取并在html中显示出来:

1.创建html相关网页
2.views:
    创建函数提取:
            引入models中的相关class  即2(1)中创建的相关表的类名
            from app1.models import Article
            
    编写发送函数:
            def article(requests):
                #相当于select * from article where id = 1 语句(并未执行):
                data = Article.objects.filter(id=1)
                #切片执行该语句:
                res = data[0]
                return render(requests,’article.html’,{html中{{}}}的对应值dict})
3.配置urls :与上面urls配置一样 先导入再添加

admin用户创建

1.命令行:

python3 manage.py createsuperuser  (本次设置user:wangqi password:wang1995)

2.添加数据库到admin:

(1)admin文件中添加代码

 导入models中创建的数据库类名:
from app1.models import Article
添加到admin中:
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
pass

(2)浏览器中进入admin即有自己创建的数据库,可以进行相关插入等操作

外部app(或者html)

1.在django文件夹下:

python3 manage.py startapp ‘名字’  创建新的app
先运行 python3 manage.py rumserver 确定Django开启成功

2.将其外部的网页代码放入django 项目下

3.配置路径

settings installed_apps添加该app名 templates:添加html存放路径  
在最后添加存放静态文件(html中的css/js)的代码以及媒体文件的media路径(见下)

4.配置urls 先连接index.html看是否成功

5.设置css/js/images

    1) python中 提供 win+r 可以查询+替换修改代码中的相关代码  
    2) 在使用正则表达式时需要勾选Regex  
    3) 查询:(css/.*\.css)  加括号表示一个整体    \ 转译     
    4) 替换:{% static ‘$1’ %}    $1表示匹配(3)中的第一个括号里的东西 再replace
         
         

6.建立数据库:

    1)modele:建表 + 命令行操作数据库链接
    2)admin建立后台
    3)settings设置路径 databases添加数据库my.cnf文件位置
    4)views添加查询和插入函数     将切片转到html代码中去:
            html中循环:{% for %}     循环代码     {% endear %}

					
	例如


	views:
				def index_movie(requests):
					data = Movie.objects.all()
					return render(requests, 'index.html', {‘data’:data}
	html:
						{% for movie in data %}
						
  • {{ movie.title }}

  • {% endfor %} 模版中切片: