1. 程式人生 > >Django(三)

Django(三)

sessions pro 設置 mod datetime 教程 add name def

location 最後一個文件夾名就是project名,我用了DjangoProject。

Application 是自動加入的APP名字,我用了DjangoTest

1.添加APP
在pycharm的工具欄找到 Tools,點擊之後會有“Run manage.py task”選項,點擊它之後,在pycharm下面會出現一個輸入界面,

在裏面輸入“startapp appName(你的App名稱)”,回車之後就可以在工程下面看到你新建的App了。
命令:startapp Plan
會自動創建目錄,文件……
後續文章也主要使用這個名稱,不再說明

第一篇文章,我們創建了APP DjangoTest 現在又創建了一個APP Plan.

2.把新建的APP Plan加入APPS列表:

編輯項目setting.py,(DjangoProject/setting.py)

INSTALLED_APPS = 中加入新建的app

1 INSTALLED_APPS = [
2     django.contrib.admin,
3     django.contrib.auth,
4     django.contrib.contenttypes,
5     django.contrib.sessions,
6     django.contrib.messages,
7     django.contrib.staticfiles
, 8 Plan.apps.PlanConfig, #此行為添加 9 ]

記得最後一個逗號,根據pycharm的提示,很容易寫的。

3.設置公用靜態路徑:

編輯項目setting.py,(DjangoProject/setting.py)最下面一部分

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = /static/#URL訪問路徑
STATIC_ROOT = os.path.join(BASE_DIR, 
deploy_static)#未來方便部署用的路徑 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#URL對應的路徑和URL名稱設一致,編寫想關代碼時提示是正確的 ) STATICFILES_FINDERS = ( #這個就是默認搜索順序,不方便的時候,就上下調調順序。 "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )

STATICFILES_DIRS是搜索系統路徑,django還會搜索app目錄下的static目錄。

簡單說就是STATICFILES_DIRS是公用的靜態文件,如jquery……

app目錄下的static是這個app自有的,非公用的。

兩個位置都會被搜索到

文件位置:項目/static/ (main/setting.py)

訪問地址:ip:8000/static

這樣代碼不提示你錯誤。很多教程把STATIC_ROOT設為static 把STATICFILES_DIRS設為別的路徑,可能不適合pycharm吧,因為pycharm提示路徑錯誤或者沒有提示。

4.創建數據結構,數據模型………………隨便你怎麽叫吧
編輯 DjangoTest目錄下 models.py

註意add_date,是創建時間,mod_date是修改時間,這個是特殊設置,後臺也不可以隨便改,django默認還不在後臺顯示。

class Train_plan(models.Model):#車次計劃表
    add_date = models.DateTimeField(保存日期, default=timezone.now)
    mod_date = models.DateTimeField(最後修改日期, auto_now=True)
    date =models.DateField(計劃日期)
    train_name=models.CharField(max_length=16,verbose_name=車次名稱)
    start_time=models.TimeField(計劃開始時間)
    end_time=models.TimeField(計劃結束時間)
    track=models.IntegerField(股道,default=0)
    plan_end=models.TimeField(圖定終到時間)
    plan_in=models.TimeField(計劃入庫時間)
    plan_out=models.TimeField(計劃出庫時間)
    plan_start=models.TimeField(圖定發車時間)
    note=models.TimeField(備註,null=True,blank=True)
    class Meta:
        verbose_name=車次計劃
        verbose_name_plural= 車次計劃


以後會有文章說明數據類型,額外的方法。

運行命令創建數據結構,數據表

makemigrations

migrate

5.註冊app到管理界面

編輯app目錄下admin.py (DjangoTest/admin.py)

from .models import Train_plan      #例程使用
from .models import Carriage_plan   #非例程使用
from .models import Carriage_history#非例程使用
class YourAdmin(admin.ModelAdmin):#例程使用
  readonly_fields = (add_date, ‘mod_date,) 
admin.site.register(Train_plan,YourAdmin)
#例程使用
admin.site.register(Carriage_plan,YourAdmin)
#非例程使用
admin.site.register(Carriage_history,YourAdmin)#非例程使用

readonly_fields,是把默認後臺不會顯示的內容以只讀形式顯示出來。可以給多個表來使用,當然,要有相同的條目。


6.登陸後發現app名字是類名,修改為中文

編輯app目錄下apps.py (DjangoTest/app.py)

from django.apps import AppConfig


class DjangoTestConfig(AppConfig):
    name = DjangoTest
    verbose_name = 測試管理

verbose_name就是別名顯示,很多地方都是這麽用。

Django(三)