# 转载请留言联系

1.创建项目

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(项目管理文件)

2.创建应用

进入项目的根目录。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

3.视图函数路由的设置

创建好基本的目录后,如果你想访问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视图。

4.模板的设置

模板文件夹一般创建在项目文件夹的根目录。创建完成后,要在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来拼接路径。

5.DEBUG的设置

在开发过程中,我们一般把setting.py中的DEBUG=True。

但是项目上线了,DEBUG必须要关闭。

但是关闭了DEBUG你会发现访问不了了。

因为你还要设置:

ALLOWED_HOSTS = []

把服务器的ip填上去。

6.语言与地区设置

没什么好说的。

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

只有上海,别写北京了然后报错了。

7.注册应用的设置

注册应用有什么用呢?

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'
]

8.关于静态文件的设置

静态文件的文件夹一般建在项目的根目录下。

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文件时输入的路径。

优质内容筛选与推荐>>
1、Java基础(三)-final关键字分析
2、(原创)cocos lua 热更新从零开始(一)最简单demo
3、Android读写XML(中)
4、afddaf
5、ASP.Net 使用SqlBulkCopy批量插入


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn