奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌

您現在所在的位置:首頁 >學習資源 > Python全棧+人工智能入門教材 > Python基礎入門教程68:Django 項目和應用程序

Python基礎入門教程68:Django 項目和應用程序

來源:奇酷教育 發(fā)表于:

要啟動 Django 項,請使用 django-adminstartproject命令,如下所示:清單 3 啟動項目1~ dev$ django-admin py startproject djpr

要啟動 Django 項,請使用 django-admin startproject 命令,如下所示:
清單 3. 啟動項目
1
~/dev$ django-admin.py startproject djproject

上面這個命令會創(chuàng)建一個 djproject 目錄,其中包含了運行 Django 項目所需要的基本配置文件:

清單 4. djproject 目錄的內容
1
2
3
4
__init__.py
manage.py
settings.py
urls.py

對于這個項目來說,我們要構建一個職位公告板應用程序 “jobs”。要創(chuàng)建應用程序,可以使用 manage.py 腳本,這是一個特定于項目的 django-admin.py 腳本,其中 settings.py 文件可以自動提供:

清單 5. 使用 manage.py startapp
1
2
~/dev$ cd djproject
~/dev/djproject$ python manage.py startapp jobs

這將創(chuàng)建一個應用程序骨架,其中模型有一個 Python 模塊,視圖有另外一個 Python 模塊。jobs 目錄中包含以下文件:

清單 6. jobs 應用程序目錄中的內容
1
2
3
__init__.py
models.py
views.py

提供應用程序在項目中的位置純粹是為新 Django 開發(fā)人員建立的一種慣例,并不是必需的。一旦開始在幾個項目中混合使用應用程序,就可以將應用程序放到自己的命名空間中,并使用設置和主 URL 文件將它們綁定在一起。現在,請按照下面給出的步驟執(zhí)行操作。

為了使 Django 認識到新應用程序的存在,還需要向 settings.py 文件中的 INSTALLED_APPS 添加一個條目。對于這個職位公告板應用程序來說,我們必須添加字符串 djproject.jobs

清單 7. 向 settings.py 中添加一個條目
1
2
3
4
5
6
7
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'djproject.jobs',
)

創(chuàng)建一個模型

Django 提供了自己的對象關系型數據映射組件(object-relational mapper,ORM)庫,它可以通過 Python 對象接口支持動態(tài)數據庫訪問。這個 Python 接口非常有用,功能十分強大,但如果需要,也可以靈活地不使用這個接口,而是直接使用 SQL。

ORM 目前提供了對 PostgreSQL、MySQL、SQLite 和 Microsoft® SQL 數據庫的支持。

這個例子使用 SQLite 作為后臺數據庫。SQLite 是一個輕量級數據庫,它不需要進行任何配置,自身能夠以一個簡單文件的形式存在于磁盤上。要使用 SQLite,可以簡單地使用 setuptools 來安裝 pysqlite(有關 setuptools 的更多資料,尤其是有關 easy_install 工具(需要單獨安裝)的資料,請參閱 參考資料):

easy_install pysqlite

在使用這個模型之前,需要在設置文件中對數據庫進行配置。SQLite 只需要指定數據庫引擎和數據庫名即可。

清單 8. 在 settings.py 中配置數據庫
1
2
3
4
5
6
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = '/path/to/dev/djproject/database.db'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

這個職位公告板應用程序有兩種類型的對象:Location 和 Job。Location 包含 city、state(可選)和 country 字段。Job 包含 location、title、description 和 publish date 字段。

清單 9. jobs/models.py 模塊
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from django.db import models
 
class Location(models.Model):
    city = models.CharField(maxlength=50)
    state = models.CharField(maxlength=50, null=True, blank=True)
    country = models.CharField(maxlength=50)
 
    def __str__(self):
        if self.state:
            return "%s, %s, %s" % (self.city, self.state, self.country)
        else:
            return "%s, %s" % (self.city, self.country)
 
class Job(models.Model):
    pub_date = models.DateField()
    job_title = models.CharField(maxlength=50)
    job_description = models.TextField()
    location = models.ForeignKey(Location)
 
    def __str__(self):
        return "%s (%s)" % (self.job_title, self.location)

__str__ 方法是 Python 中的一個特殊類,它返回對象的字符串表示。Django 在 Admin 工具中顯示對象時廣泛地使用了這個方法。

要設置這個模型的模式,請返回 manage.py 的 sql 命令。此時模式尚未確定。

清單 10. 使用 manage.py sql 命令查看數據庫模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
~/dev/djproject$ python manage.py sql jobs
 
BEGIN;
CREATE TABLE "jobs_job" (
    "id" integer NOT NULL PRIMARY KEY,
    "pub_date" date NOT NULL,
    "job_title" varchar(50) NOT NULL,
    "job_description" text NOT NULL,
    "location_id" integer NOT NULL
);
CREATE TABLE "jobs_location" (
    "id" integer NOT NULL PRIMARY KEY,
    "city" varchar(50) NOT NULL,
    "state" varchar(50) NULL,
    "country" varchar(50) NOT NULL
);
COMMIT;

為了初始化并安裝這個模型,請運行數據庫命令 syncdb

~/dev/djproject$ python manage.py syncdb

注意,syncdb 命令要求我們創(chuàng)建一個超級用戶帳號。這是因為 django.contrib.auth 應用程序(提供基本的用戶身份驗證功能)默認情況下是在 INSTALLED_APPS 設置中提供的。超級用戶名和密碼用來登錄將在下一節(jié)介紹的管理工具。記住,這是 Django 的超級用戶,而不是系統的超級用戶。

主站蜘蛛池模板: 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 潍坊青州古城旅游景点攻略_青州酒店美食推荐-青州旅游网 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 2025第九届世界无人机大会 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 厂房出租_厂房出售_产业园区招商_工业地产 - 中工招商网 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 自动化改造_智虎机器人_灌装机_贴标机-上海圣起包装机械 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 工业rfid读写器_RFID工业读写器_工业rfid设备厂商-ANDEAWELL | 全自动变压器变比组别测试仪-手持式直流电阻测试仪-上海来扬电气 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 河南中专学校|职高|技校招生-河南中职中专网 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 数控走心机-双主轴走心机厂家-南京建克 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 |