借鉴 https://blog.csdn.net/tang_jin2015/article/details/81193943
本文主要借鉴的,另添加了一些创建过程中出现的异常
创建后的文件夹项目如下:
在使用前,我们务必了解这些组件的作用。其实django有点类似JAVA或者C#建立网站,采用的是MVC模型,对应到django中。
1.Manage.py
是个管理角色,拥有的功能包括:
1)创建app: python manage.py startapp miaTest
其中startapp是命令,miaTest为app的名字
2)管理数据库
Python manage.py sqlall miaTest:查看miaTest这个app下面所有的表
Python manage.py syncdb:同步数据库
3)管理服务器
Python manage.py runserver ip:port->更改访问的ip及端口号
可以借鉴:https://www.cnblogs.com/pangblog/p/3297186.html
2.Venv
要使用django,首先需要建立一个虚拟工作环境,在这个虚拟工作环境中可以安装包,将其与其他项目隔离,见《python 编程:从入门到实践》主要解决Python软件开发过程中版本与依赖性问题以使得每个项目有自己独立的安装目录环境。
3.mySite2
1)init.py
该文件默认是空的,只用定义了这个文件,python虚拟机才会认为当前文件夹是一个合法的package,代表目录下面的Python程序是module的一部分。所以它是package的标识
2)Settings.py
包括app路径,数据库配置,sql语句,静态文件目录,中间件,session存储的相关配置
3)Urls.py
a.所有网址的入口,会关联到views中的函数
4)Wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myDjango.settings')
application = get_wsgi_application()
打开后,看到的是这样子的,从字面意思可以判断,是设置环境的默认值。
Wsgi:Web Server Gateway Interface, 只是一种规范,描述web server与web application通信的规范,简单理解是一个配置文件,建立服务器与django程序之间的桥梁。网络通信接口
创建应用
application
Templates
主要由html代码及逻辑控制块代码。
创建app
在终端中利用manage.py输入:python manage.py startapp myApp
对里面的文件进行解释.在该文件夹中除了init.py,其它文件与mySite文件夹下均不相同。
1.Admin.py: django 自带admin后面管理,将models.py 中表映射到后台
2.Apps.py:应用的相关配置
3.Models.py:用于设计数据库表
4.Tests.py:用于编写Django单元测试
5.Views.py:视图文件,处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,用户请求的数据,输出到网页
创建网页
1.在templates下面加入一个新文件:index.html,内容如下:
MiaTest
hi ,mia,the first python web application
通过index.html的html文件格式可以返回更多的信息。当然入股可以的话,可以全部都写在views文件中,但这个仅限于比较简单的逻辑。
2.views中加入对index.html具体请求的处理,处理业务逻辑
from django.shortcuts import render
from django.shortcuts import HttpResponse
# 将请求定位到index.html文件中
def index(request):
return render(request,'index.html')
3.在urls.py中将url映射到相应的业务处理逻辑
from django.contrib import admin
from django.urls import path
from myApp import views
admin.autodiscover()
urlpatterns = [
path('admin/', admin.site.urls),
path('leige/',views.index),
]
4.点击run,控制台输出:
输入http://127.0.0.1:8000/leige
NameError: name 'os' is not defined
解决方法: settings.py
import os
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
import pymysql
pymysql.install_as_MySQLdb() # 使用pymysql代替mysqldb连接数据库
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1.
pymysql.version_info = (1, 4, 13, "final", 0)