跟大佬學django-安裝、創建應用、manage.py、網站配置


django起步

安裝django

sudo pip3 install Django==1.10.1

 

 

>>> django.get_version()

'1.10.1

 

創建django項目

python3 django-admin startproject mysite

 

 

啟動django:

python3 manage.py runserver 0.0.0.0:8000

[root@bogon mysite]# python3 manage.py runserver 0.0.0.0:8000

Performing system checks...

 

System check identified no issues (0 silenced).

 

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.

Run 'python manage.py migrate' to apply them.

 

August 29, 2019 - 00:12:32

Django version 1.10.1, using settings 'mysite.settings'

Starting development server at http://0.0.0.0:8000/

Quit the server with CONTROL-C.

[29/Aug/2019 00:12:38] "GET / HTTP/1.1" 200 1767

Not Found: /favicon.ico

[29/Aug/2019 00:12:38] "GET /favicon.ico HTTP/1.1" 404 1940

 

關閉防火牆:systemctl stop firewalld

或者service firewalld stop

[root@localhost mysite]# service firewalld stop

Redirecting to /bin/systemctl stop firewalld.service

[root@localhost mysite]# firewall-cmd --state 

not running

關於防火牆的帖子

https://www.cnblogs.com/zxg-blog/p/9835263.html

在windows上訪問centos系統ip:8000端口

 

 

創建應用

python3 manage.py startapp blog

 

 

 

django-admin startapp blog也可以創建應用

[root@bogon mysite]# django-admin startapp blog

[root@bogon mysite]# ls

blog  db.sqlite3  manage.py  mysite

在windows下配置deployment連接到linux服務器,可以同步看到代碼

 

 

 

 

 

 

manage.py

在了解manage.py之前,先講解創建項目時用到的django-admin.py,它是django的任務管理命令行工具

django-admin命令查看幫助信息

 

[root@bogon mysite]# django-admin

 

Type 'django-admin help <subcommand>' for help on a specific subcommand.

 

Available subcommands:

 

[django]

    check

    compilemessages

    createcachetable

    dbshell

    diffsettings

    dumpdata

    flush

    inspectdb

    loaddata

    makemessages

    makemigrations

    migrate

    runserver

    sendtestemail

    shell

    showmigrations

    sqlflush

    sqlmigrate

    sqlsequencereset

    squashmigrations

    startapp

    startproject

    test

    testserver

看到startapp和startproject了吧,在創建項目的命令中,我們使用了startproject。這里還有一個startapp,這個參數在剛剛創建的應用中出現了,但不是用在django-admin后面,而是用於python manage.py的參數,那么這里的startapp是啥意思呢?

 

[root@localhost mysite]# django-admin help startapp

usage: django-admin startapp [-h] [--version] [-v {0,1,2,3}]

                             [--settings SETTINGS] [--pythonpath PYTHONPATH]

                             [--traceback] [--no-color] [--template TEMPLATE]

                             [--extension EXTENSIONS] [--name FILES]

                             name [directory]

 

Creates a Django app directory structure for the given app name in the current

directory or optionally in the given directory.

 

positional arguments:

  name                  Name of the application or project.

  directory             Optional destination directory

 

用django-admin help來查看一下,發現startapp這個參數也是用於創建應用的,與python manage.py startapp application_name中的startapp的功能一樣。

 

我們把剛剛建立的項目中的blog應用刪除,再用django-admin startapp blog試一下。

[root@localhost mysite]# ls

blog  db.sqlite3  manage.py  mysite

[root@localhost mysite]# rm -r blog

[root@localhost mysite]# ls

db.sqlite3  manage.py  mysite

[root@localhost mysite]# django-admin startapp blog

[root@localhost mysite]# ls

blog  db.sqlite3  manage.py  mysite

 

 

python manage.py startapp blog和django-admin startapp blog的形式不同,但效果一樣,也建立了應用blog,如果用tree命令查看目錄結構,會發現與前面的目錄結構一模一樣,如下

 

 

既然,django-admin startapp blog和python manage.py startapp blog是殊途同歸的,那么manage.py是什么呢?

 

創建一個Django項目后,manage.py被自動生成在項目的根目錄中,它是對django-admin的簡單封裝,同樣能夠實現命令行操作

 

 

python3 manage.py查看manage.py幫助信息

[root@bogon mysite]# python3 manage.py

 

Type 'manage.py help <subcommand>' for help on a specific subcommand.

 

Available subcommands:

 

[auth]

    changepassword

    createsuperuser

 

[django]

    check

    compilemessages

    createcachetable

    dbshell

    diffsettings

    dumpdata

    flush

    inspectdb

    loaddata

    makemessages

    makemigrations

    migrate

    sendtestemail

    shell

    showmigrations

    sqlflush

    sqlmigrate

    sqlsequencereset

    squashmigrations

    startapp

    startproject

    test

    testserver

 

[sessions]

    clearsessions

 

[staticfiles]

    collectstatic

    findstatic

    runserver

 

與django-admin進行對比,發現代碼有一部分相同,同時manage.py還有自己的特點。

django-admin命令對應着django-admin.py文件,它在django安裝后保存在django安裝目錄的/bin下面。

 

[root@localhost django]# whereis django-admin.py

django-admin: /usr/local/bin/django-admin.py

而manage.py只在建立了一個項目之后,才存在與項目的根目錄中

 

對於根目錄中的manage.py,不要修改,也不要刪除,后面我們會經常使用它。

mysite

mysite是所建項目的管理功能目錄,這個目錄的名稱因用戶所創建的項目名稱的不同而異,雖然可以在這個目錄中輸入應用部分的內容,但在類似本書的多應用項目中一般不這么做。它里面的幾個文件常用與面向這個項目進行參數配置。

 

settings.py:

這個文件中包括了項目的初始化設置,可以針對整個項目進行有關參數配置,如配置數據庫、添加應用等。

urls.py:

這是一個URL配置表文件,主要是將URL映射到應用程序上。當用戶請求某個URL時,Django項目會根據這個文件中的映射關系指向某個目標對象,該對象可以是某個應用中的urls.py文件,也可以是某個具體的視圖函數。在django中,這個文件也被稱為URLconf,這是django非常強大的一個特性。

 

wsgi.py:WSGI是Web Server Gateway Interface的縮寫。

讀者可能聽說過CGI,CGI是Common Gateway Interface的縮寫,與WSGI有所不同。WSGI是python所選擇的服務器和應用標准,django也會使用。wsgi.py文件定義了我們所創建的項目都是WSGI應用。

關於WSGI的更多知識可以參閱:http://wsgi.readthedocs.io/en/latest/index.html

 

__pycache__:

創建項目后,運行python manage.py runserver命令,django會進行編譯,編譯后會成.pyc結尾的文件,這些文件會存在__pychache__文件夾中。

 

blog

blog是項目中所創建的應用之一,注意是之一,用創建應用的指令還可以創建很多其他的應用。每創建一個新的應用,django就會在項目根目錄(./)中創建一個子目錄,並且目錄中會有一些默認的文件。

admin.py

在這個文件中,可以自定義django管理工具,比如設置在管理界面能夠管理的項目,或者通過重新自定義與系統管理有關的類對象,向管理功能增加新的內容。

 

apps.py

這個文件是django1.0之后增加的,通常包含對應用的設置,比如為管理功能提供一個適合的應用名稱。

migrations

這是一個目錄,用於存儲應用的數據庫表結構的指令,通過這些指令可以修改和創建數據庫從而在models.py模型類和數據庫表之間遷移。

 

models.py

這是應用的數據模型,每個django應用都應當有一個models.py文件,雖然該文件可以為空,但不易刪除。

 

test.py

在這個文件中可以編寫測試文檔來測試所建立的應用。

 

views.py

這是一個重要的文件,用於保存響應各種請求的函數或者類。如果編寫的是函數,則稱之為基於函數的視圖;如果編寫的是類,則稱之為基於類的視圖。views.py就是保存函數或者類的視圖文件。當然,也可以用其他的文件夾名稱,只不過在引入響應的函數或者類時,要注意名稱的正確性,views.py是我們習慣使用的文件名稱。

 

db.sqlite3

這時一個默認的數據庫。SQLite是python默認安裝的數據庫,在django中也可以默認使用。因為到現在為止我們還沒有配置數據庫,所以就有了一個默認的文件(這個默認文件是在./mysite/settings.py中配置生成的)。

 

網站配置

前面僅僅是創建了應用,還沒有將該應用注冊到本項目中,因此暫時不能訪問。

 

在django項目中,主管信息注冊(對本項目進行各種信息聲明)的文件是./mysite/settings.py。在瀏覽這個文件時會發現里面的內容還不少,下面說明一下主要的內容:

DEBUG:

其值為True或者False,在開發過程中,需要設置成True,在測試功能時,django能夠顯示詳細的報錯信息—這是“開發模式”。如果將項目部署到真正要對外發布的服務器上,我們稱之為“生產環境”,必須將其值修改為False,從而避免暴露項目的內部信息。

 

ALLOWED_HOSTS:

在DEBUG為True時,其值可以為空。當部署到生產環境中時,要把主域名填寫到這里,才能通過域名訪問到本網站。

 

INSTALLED_APPS:

這是一個非常重要的配置項,所有的應用只有寫到這里才能生效。默認情況下,已經有了一些應用,比如django.contrip.admin就是針對項目后台管理的應用。現在需要把剛剛建立的blog配置到這里。下面的INSTALLED_APPS列表中,‘blog’是新增的,就是所建立的應用名稱,其他各項是django默認具有的應用:

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog'
]

 

DATABASES:

在這里可以配置數據庫。django能夠支持多種數據庫,比如常見的MySQL、PostgreSQL、Oracle等。默認配置是SQLite,因為這個數據庫小巧靈活,還是python標准庫所支持的。所以,我們就使用這個數據庫,便於讀者使用和遷移代碼,在實際的工程項目中,在服務器上可能很少用到它。

 

LANGUAGE_CODE:

設置項目的語言,一般情況下可以不用修改,如果非用漢語,則設置為LANGUAGE_CODE=’zh-hans’(主要不是’zh-cn’)。

 

TIME_ZONE:

設置時區,通常使用東八區,設置為”Asia/Shanghai”。

 

至此,我們已經創建了項目和一個應用,並且對./mysite/settings.py進行必要的配置。已經邁出了第一步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM