django基本设置
django-admin startproject 项目名
示例: django-admin startproject django练习
完成后目录结构是这样的:
├────django练习(项目文件夹)
├── django练习(与项目同名的Python包)
│ ├── __init__.py(用来告诉python,当前目录是python模块)
│ ├── settings.py(项目的配置文件)
│ ├── urls.py(URL根配置)
│ └── wsgi.py(内置runserver命令的WSGI应用配置)
└── manage.py(项目管理文件)
进入项目的根目录。python manage.py startapp 应用名
示例:python manage.py startapp user
完成后目录结构是这样的:
django练习
├── django练习
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── user
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
创建好基本的目录后,如果你想访问user中的views的视图函数,先要进行一些设置。
为什么要设置?以及流程是怎样的?
因为用户在浏览器输入网站,发过来请求时,django会根据正则选出相应的视图,Django会把请求信息封装为一个
HttpRequest
对象,并作为视图的第一个参数传入。所以视图函数也必须定义一个形参,用来接受HttpRequest对象。视图必须返回一个HttpResponse
对象(或其子类对象),不能像Flask一样直接返回字符串!所以说,HttpRequest
请求对象由Django创建,HttpResponse
响应对象由开发人员创建。
(1)第一种方法:
在项目python包里的urls.py修改,直接指向user.views。
例如我们要访问127.0.0.1/user/index
项目python包的设置如下:
from user import views urlpatterns = [ url(r'^admin/', admin.site.urls), # 默认有的,别动 url(r'^user/index$',views.index) # 添加这条 ]
user.views的代码简单演示:
from django.http import HttpResponse def index(request): # 一定要接受一个参数,这个参数的类型是HttpRequest对象 return HttpResponse("hello,django") # 返回的必须是HttpRespones
但是一般不用这种方法。
(2)第二种方法:
为了减轻项目下的urls.py文件的配置量,方便url的管理,会分别在项目的urls.py和app文件夹下的urls.py中进行配置。
例如我们也是要访问127.0.0.1/user/index
项目下的urls.py文件设置如下:
from django.conf.urls import url, include urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^user/',include('user.urls')) ]
user文件夹下的urls.py文件设置如下(注意,这个文件需要自己创建):
from django.conf.urls import url from user import views urlpatterns=[ url(r'^index$',views.index) ]
附:
设置流程图片示例:
设置路由时需要注意的一个点是:Django中定义路由时,通常习惯以斜线 / 结尾
注意:当用户访问不以斜线/结尾的相同路径时,Django会把用户重定向到以斜线/结尾的路径上,而不会返回404不存在,例如:
urlpatterns = [ url(r'^index/$', views.index, name='index'), ]
用户访问index
或者index/
网址,均能访问到index视图。
模板文件夹一般创建在项目文件夹的根目录。创建完成后,要在setting文件里面绑定他的位置,才能进行使用。
首先,在setting文件里,可以看到这么一句代码:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.path.abspath就是去文件的绝对路径。os.path.dirname就是取上一级文件目录的路径。
os.path.abspath取到setting的绝对路径,两次取上一级目录的路径,就是项目的根目录。
所以,BASE_DIR就是项目的根目录。
然后看下模板的设置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],...
很明显,我们需要补全模板的路径。
设置:
'DIRS': [os.path.join(BASE_DIR,"templates")]
用os.path.join来拼接路径。
在开发过程中,我们一般把setting.py中的DEBUG=True。
但是项目上线了,DEBUG必须要关闭。
但是关闭了DEBUG你会发现访问不了了。
因为你还要设置:
ALLOWED_HOSTS = []
把服务器的ip填上去。
没什么好说的。
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
只有上海,别写北京了然后报错了。
注册应用有什么用呢?
1.要根据应用中的模型类生成表
2.要用到应用中的模板(也就是放在应用文件夹里面的模板)
如果用到这两个功能,你就需要注册应用。没用到的话,注不注册无所谓。不过还是习惯性注册一下为好。
注册应用也有两种方法:
(1)直接写应用的文件夹名。
INSTALLED_APPS === [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'user' ]
这样子设置的话,应用文件夹里面的apps.py就可以删除了。
(2)导入应用文件夹里面apps.py的类。
在我们创建应用时,会自动创建一个apps.py文件在应用文件夹里,里面存放在一个类,类存放着应用的名字(其实就是应用文件夹的名字)。所以还可以这样子设置:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'user.apps.UserConfig' ]
静态文件的文件夹一般建在项目的根目录下。
STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR, "static_files")] # 注意是一个列表!
STATICFILES_DIRS是设置静态文件的真实位置的。因为在项目的根目录下,所以就是BASE_DIR加上文件夹的名字。
而STATIC_URL是浏览器访问静态文件的URL前缀。例如:127.0.0.1:8000/static/abc.jpg就可以访问到静态文件夹下的abc.jpg。经常应用于html导入js文件时输入的路径。
优质内容筛选与推荐>>