zoukankan      html  css  js  c++  java
  • django基本设置

    # 转载请留言联系

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

  • 相关阅读:
    CPU使用率呈现正弦曲线
    编写一个简单的http server(Linux, gcc)
    c#操作 文件操作
    Javascript 数字时钟
    .net 中读取文本文件
    c# 常用字符串函数
    I2C总线之(三)以C语言理解IIC
    典型的多线程操作界面的例子
    uvm_common_phase.svh
    uvm_task_phase.svh
  • 原文地址:https://www.cnblogs.com/chichung/p/9872766.html
Copyright © 2011-2022 走看看