Django
Django是重量级的 web应用框架,用Python语言开发
Python和Django 是快速开发、设计、部署网站的最佳组合
MVC模型:
model–模型 编写程序应有的功能,负责业务对象与数据库的映射
view–视图 图形界面,负责与用户的交互
controller–控制器 负责转发请求,对请求进行处理
MTV模型:
model–模型 编写程序应有的功能,负责业务对象与数据库的映射
template-模板 负责把页面html展示给用户
view-视图 负责业务逻辑,并在合适的时候调用module和template
还需要一个URL分发器,将一个一个URL的页面请求分发给不同的view处理,view再调用相应的model和template
用户通过浏览器发起一个request请求,请求会去访问视图,视图去模块里取数据数据库是与模块交互的,返回给视图,视图把要展示的数据返回给模板,模板就是页面
Django安装
菜鸟教程https://www.runoob.com/django/django-install.html
检查Django是否安装成功,命令行进入Python
xxxx$python
>>import django
>>django.get_version()
Django的命令行:
创建一个项目-HelloWorld
Django-admin.py startproject HelloWorld
Pycharm新建一个Django项目,然后增加自己的自建应用(application), python manage.py startapp 应用名,目录为:
项目目录
manage.py 一个实用的命令执行工具,让你以各种方式与Django项目进行交互
HelloWorld 下会有一个同名的子目录,子目录HelloWorld下:
settings --Django的项目配置
urls --Django项目的URL声明,一份由Django驱动的网站目录
wsgi --一个WSGI兼容的web服务器入口,以便运行你的项目
启动服务器
python manage.py runserver
python manage.py runserver 0.0.0.0:8000
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号
视图和URL配置
有自建应用,必须先把自建应用的名字加到settings的install_APP里面–pycharm创建的会自动加
修改settings
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user', #自建的
'test_tools', #自建的
'case' #自建的
]
#下面修改一些普通配置
LANGUAGE_CODE = 'zh-Hans' #修改中文编码
TIME_ZONE = 'Asia/Shanghai' #修改时区
USE_I18N = True
USE_L10N = True
USE_TZ = False #这里也改一下,要不然数据库用的还是标准时区
在自建应用zyy的view里配置,配置自己的view
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def user_info(request):
s = '你好'
return HttpResponse(s) #返回的是字符串的用它
def welcome(request):
username = '易烊千玺'
return render(request,'welcome.html',{'username':username})
#render就是返回一个网页
#因为在settings里面配置了dir 所以能找到这个路径-welcome.html
def index(request):
return render(request,'index.html')
其中,templates下面的 DIR,是指的是Django寻找HTML的路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 'DIRS': [BASE_DIR , '/templates'], #Django自动生成,不好使
'DIRS': [os.path.join(BASE_DIR, 'templates')],
#指的是Django寻找html模板的目录
},
]
接着绑定URL与视图函数。打开urls.py
from django.contrib import admin
from django.urls import path
from zyy import views #导入自己的view
urlpatterns = [
path('admin/', admin.site.urls),
path('hello_world/', views.hello_world), #添加view,前面的hello_world是链接拼接的路径,这个页面应为--http://127.0.0.1:8000/hello_world
path('', views.index), #访问路径不写,代表访问的根目录就是它
]
path函数
Django path() 可以接收四个参数,分别为2个必选参数,两个可选参数
- route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
- view: 用于执行与正则表达式匹配的 URL 请求。
- kwargs: 视图使用的字典类型的参数。
- name: 用来反向获取 URL。
Static
static 是在Django 具体APP下建立的static目录,用来存放静态资源
在settings里面设置静态资源路径!!注意是一个元祖,要加,
STATIC_URL = '/static/' #原有的
#自己设置的
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
运行Django服务器报错 -TypeError: unsupported operand type(s) for /: ‘str‘ and ‘str‘,分析与解决
错误类型: TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’
出错代码: 如上图绿框所示,在settings.py中的’DIRS’: [BASE_DIR / ‘templates’]
错误分析: 这个提示大概是说:“类型错误:不支持操作类型为字符串和字符串”,直接把两个字符串(BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))在前面定以为基础路径,也就是整个项目的路径)在列表中连接起来是不合适的,这里系统将“/”理解为了除号,系统理解为“字符串/字符串”。实际上这里想表达的意思将BASE_DIR 和’templates’连在一起形成一个完整路径,而“/”是路径分隔符。
修改方法: ‘DIRS’: [str.format(BASE_DIR, ‘/templates’)],再次运行就成功了。
实际上,我所使用的是:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 指的是Django寻找html模板的目录
这个bug的 原文链接:https://blog.csdn.net/u010021014/article/details/110449782