用Python+Django在Eclipse環境下開發web網站【轉】

一、創建一個項目
如果這是你第一次使用Django,那么你必須進行一些初始設置。也就是通過自動生成代碼來建立一個Django項目--一個Django項目的設置集,包含了數據庫配置、Django詳細選項設置和應用 特性配置,具體操作步驟如下所示。

1.新建Django項目


選擇sqlite數據庫

2.創建網站模塊app

3.測試新建的模塊是否正常

復制代碼
Validating models...0 errors found
March 12, 2014 - 10:26:53
Django version 1.6.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
復制代碼

服務器啟動起來后,去瀏覽器輸入網址:http://127.0.0.1:8000,你會看到一個令人愉悅的,柔和的淡藍色 “Welcome to Django” 頁面。表示它已正常工作!

讓我們來看看mysite都創建了些什么:

這些文件分別是:
a、外層mysite目錄只是你項目的一個容器。對于Django來說該目錄名并不重要;你可以重命名為你喜歡的。
b、manage.py: 一個實用的命令行工具,可讓你以各種方式與該Django項目進行交互。?
c、內層mysite目錄是你項目中的實際Python包。該目錄名就是Python包名,通過它你可以導入它里面的任何東西。(e.g.import mysite.settings).
d、mysite/__init__.py:一個空文件,告訴Python該目錄是一個Python包。?
e、mysite/settings.py:該Django項目的設置/配置。?
f、mysite/urls.py:該Django項目的URL聲明;一份由Django驅動的網站“目錄”。?
g、mysite/wsgi.py:一個WSGI兼容的Web服務器的入口,以便運行你的項目。

更改端口號
默認情況下,:djadmin:runserver 命令啟動的開發服務器只監聽本地IP的8000端口。

如果你想改變服務器的端口,把它作為一個命令行參數傳遞即可。例如以下命令啟動的服務器將監聽8080端口:

復制代碼
C:\Users\D-117>cd F:\workspace\mysite\src\mysite\ #manage.py文件所在目錄,即mysite項目下
C:\Users\D-117>f:
F:\workspace\mysite\src\mysite>python manage.py runserver 8080
Validating models...0 errors found
March 12, 2014 - 10:31:27
Django version 1.6.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.
復制代碼

如果你想改變服務器IP,把它和端口號一起傳遞即可。因此,要監聽所有公共IP地址(如果你想在其他電腦上炫耀你的工作),請使用:
python manage.py runserver 0.0.0.0:8000

數據庫設置
現在,編輯 mysite/settings.py 。 這是一個普通的Python模塊,包含了代表Django設置的模塊級變量。 更改DATABASES中'default'下的以下鍵的值,以匹配您的數據庫連接設置。
a、ENGINE?– 從 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 'django.db.backends.sqlite3', 'django.db.backends.oracle' 中選一個
b、NAME?– 你的數據庫名。如果你使用 SQLite,該數據庫將是你計算機上的一個文件;在這種情況下,:setting:NAME 將是一個完整的絕對路徑,而且還包含該文件的名稱。如果該文件不?
存在,它會在第一次同步數據庫時自動創建(見下文)。當指定路徑時,總是使用正斜杠,即使是在Windows下(例如:`C:/homes/user/mysite/sqlite3.db`) 。
c、USER?– 你的數據庫用戶名 ( SQLite 下不需要) 。
d、PASSWORD?– 你的數據庫密碼 ( SQLite 下不需要) 。
e、HOST?– 你的數據庫主機地址。如果和你的數據庫服務器是同一臺物理機器,請將此處保留為空 (或者設置為 127.0.0.1) ( SQLite 下不需要) 。?
如果你是新建數據庫,我們建議只使用 SQLite ,將 ENGINE 改為 'django.db.backends.sqlite3' 并且將 NAME 設置為你想存放數據庫的地方。 SQLite 是內置在 Python 中的,因此你不需要安裝任何東西來支持你的數據庫。

注意:
如果你使用PostgreSQL或者MySQL,確保你已經創建了一個數據庫。還是通過你的數據庫交互接口中的“CREATE DATABASE database_name;”命令做到這一點的。
如果你使用SQLite,你不需要事先創建任何東西 - 在需要的時候,將會自動創建數據庫文件。

當你編輯 settings.py 時,將 TIME_ZONE 修改為你所在的時區。默認值是美國中央時區(芝加哥)。同時,注意文件底部的 INSTALLED_APPS 設置。它保存了當前 Django 實例已激活的所?
有 Django 應用。每個應用可以被多個項目使用,而且你可以打包和分發給其他人在他們的項目中使用。

默認情況下,:setting:INSTALLED_APPS 包含以下應用,這些都是由 Django 提供的:

django.contrib.auth – 身份驗證系統。
django.contrib.contenttypes – 內容類型框架。
django.contrib.sessions – session 框架。
django.contrib.sites – 網站管理框架。
django.contrib.messages – 消息框架。
django.contrib.staticfiles – 靜態文件管理框架。

這些應用在一般情況下是默認包含的。

所有這些應用中每個應用至少使用一個數據庫表,所以在使用它們之前我們需要創建數據庫中的表。要做到這一點,請運行以下命令:python manage.py syncdb,具體操作下面會闡述。

至此,項目開發環境建立好了,我們可以開工了。

二、創建模型

4.編輯代碼
4.1修改blog.models.py

復制代碼
from django.db import models
from django.contrib import admin# Create your models here.
class BlogPost(models.Model):title = models.CharField(max_length = 150)content = models.TextField()timestamp = models.DateTimeField()class BlogPostAdmin(admin.ModelAdmin):list_display = ('title', 'content', 'timestamp')admin.site.register(BlogPost, BlogPostAdmin)
復制代碼

我們將創建一個BlogPost模型,包含title、content、timestamp三個字段。每個模型都繼承自django.db.models.Model子類的類來描述。 每個模型?
都有一些類變量,每一個類變量都代表了一個數據庫字段。

每個字段由一個 Field 的實例來表現 – 比如 CharField 表示字符類型的字段和 DateTimeField 表示日期時間型的字段。這會告訴 Django 每個?
字段都保存了什么類型的數據。

每一個 Field 實例的名字就是字段的名字(如: title、content、timestamp),其格式屬于親和機器式的。在你的 Python 的代碼中會使用這個?
值,而你的數據庫會將這個值作為表的列名。

4.2修改blog.views.py

復制代碼
# Create your views here.
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogPostdef archive(request):posts = BlogPost.objects.all()t = loader.get_template('archive.html')c = Context({'posts': posts})return HttpResponse(t.render(c))
復制代碼

4.3修改mysite.setting.py,找到下面部分進行修改

復制代碼
INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog',
)
復制代碼

4.4修改mysite.urls.py

復制代碼
from django.conf.urls import patterns, include, urlfrom django.contrib import admin
admin.autodiscover()from blog.views import archiveurlpatterns = patterns('',# Examples:# url(r'^$', 'mysite.views.home', name='home'),# url(r'^blog/', include('blog.urls')),url(r'^admin/', include(admin.site.urls)),url(r'^blog/', archive),
)
復制代碼

5.建立樣式網頁模板
請在包blog下添加templates文件夾,并在templates下建立兩個網頁文件:archive.html和base.html

5.1編輯archive.html

復制代碼
{% extends "base.html" %}  
{% block content %}  
{% for post in posts %}  
<h1>{{ post.title}}</h1>  
<p>{{ post.content }}</p>
<p>{{ post.timestamp|date:"1, F jS"}}</p>
{% endfor %}  
{% endblock %}
復制代碼

5.2編輯base.html

復制代碼
<html>  <style type="text/css">  body { color: #edf; background: #453; padding: 0 5em; margin:0 }  h1 { padding: 2em lem; background:#675 }  h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em }  p { margin: lem 0 }  </style>  <body>  <h1><center>Alexia's Blog</center></h1>  {% block content %}  {% endblock %}  </body>  
</html>
復制代碼

三、同步數據庫

設置你的賬號和密碼,為登陸blog的管理后臺作準備。

復制代碼
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_sessionYou just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'd-117'): root
Email address: root@qq.com
Password: root
Password (again): root
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Finished "F:\workspace\mysite\src\mysite\manage.py syncdb" execution.
復制代碼

四.運行測試
登陸界面,登陸賬號和密碼是初始化數據庫的時候設定的。

登錄成功后跳轉到下面頁面:

在該頁面可以添加blog文章:

發布成功后,輸入網址:http://127.0.0.1:8000/blog/進行查看,測試成功!

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉]數據結構KMP算法配圖詳解(超詳細)

KMP算法配圖詳解 前言 KMP算法是我們數據結構串中最難也是最重要的算法。難是因為KMP算法的代碼很優美簡潔干練&#xff0c;但里面包含著非常深的思維。真正理解代碼的人可以說對KMP算法的了解已經相當深入了。而且這個算法的不少東西的確不容易講懂&#xff0c;很多正規的書本…

BGP-MED-2

BGP-MED-2如圖&#xff1a;當AS100去往AS300的60、10的網絡時&#xff0c;60走R3&#xff0c;10走R1!使用MED屬性影響選路&#xff01; R2的配置 bgp 200peer 1.1.1.1 as-number 100 peer 1.1.1.1 ebgp-max-hop 255 peer 1.1.1.1 connect-interface LoopBack0peer 4.4.4.4 as-n…

WPF 實現 Gitee 氣泡菜單(一)

WPF 實現 Gitee 氣泡菜單&#xff08;一&#xff09;氣泡菜單&#xff08;一&#xff09;作者&#xff1a;WPFDevelopersOrg原文鏈接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;項目使用 MIT 開…

[轉]LVS負載均衡(LVS簡介、三種工作模式、十種調度算法)

一、LVS簡介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虛擬服務器&#xff0c;是由章文嵩博士主導的開源負載均衡項目&#xff0c;目前LVS已經被集成到Linux內核模塊中。該項目在Linux內核中實現了基于IP的數據請求負載均衡調度方案&#xff0c;其體系結構如圖1…

一張圖看懂微軟Power BI系列組件

一、Power BI簡介 Power BI是微軟最新的商業智能&#xff08;BI&#xff09;概念&#xff0c;它包含了一系列的組件和工具。話不多說&#xff0c;直接上圖吧&#xff1a; Power BI的核心理念就是讓我們用戶不需要強大的技術背景&#xff0c;只需要掌握Excel這樣簡單的工具就能快…

互聯網項目總結

2019獨角獸企業重金招聘Python工程師標準>>> 從去年年底開始專門被分配到互聯網小組做項目&#xff0c;一直想做個總結&#xff0c;但是苦于太貪玩。好吧&#xff0c;借著小組技術交流來一發。這里只對自己新學習的技術或者一些小技巧做簡要概述&#xff0c;不做深究…

【ArcGIS微課1000例】0036:分式標注案例教程

【拓展閱讀】:【ArcGIS Pro微課1000例】0015:ArcGIS Pro中屬性字段分式標注案例教程 文章目錄 1. 符號化2. 分式標注1. 符號化 右鍵數據圖層→符號系統,打開符號系統對話框,住符號系統選擇【唯一值】,字段1選擇NAME。 唯一值標注效果: 2. 分式標注 雙擊打開圖層屬性,切…

【轉】 ConstraintLayout 完全解析 快來優化你的布局吧

轉自&#xff1a; http://blog.csdn.net/lmj623565791/article/details/78011599 本文出自張鴻洋的博客 一、概述 ConstraintLayout出現有一段時間了&#xff0c;不過一直沒有特別去關注&#xff0c;也多多少少看了一些文字介紹&#xff0c;多數都是對使用可視化布局拖拽&#…

IoTDB 的C# 客戶端發布 0.13.0.7

IoTDB C# Client 0.13.0.7 已經發布&#xff0c; 此版本更新的內容為筆者為Apache-IoTDB-Client-CSharp實現了Ado.Net的兼容層&#xff0c;降低了對IoTDB的使用門檻。于此同時&#xff0c; IoTSharp也開始支持了IoTDB的數據入庫&#xff0c;隨著晚些時候IoTSharp 2.7 版本的發布…

[轉]Docker超詳細基礎教程,快速入門docker

一、docker概述 1.什么是docker Docker 是一個開源的應用容器引擎&#xff0c;基于 Go 語言 并遵從 Apache2.0 協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中&#xff0c;然后發布到任何流行的 Linux 機器上&#xff0c;也可以實現虛擬…

【Zookeeper】源碼分析之服務器(一)

一、前言 前面已經介紹了Zookeeper中Leader選舉的具體流程&#xff0c;接著來學習Zookeeper中的各種服務器。 二、總體框架圖 對于服務器&#xff0c;其框架圖如下圖所示 說明&#xff1a; ZooKeeperServer&#xff0c;為所有服務器的父類&#xff0c;其請求處理鏈為PrepReques…

linux下配置samba服務器(以CentOS6.7為例)

一、簡介&#xff08;百度百科&#xff09;Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件&#xff0c;由服務器及客戶端程序構成。SMB&#xff08;Server Messages Block&#xff0c;信息服務塊&#xff09;是一種在局域網上共享文件和打印機的一種通信協議&#xff0c…

【ArcGIS微課1000例】0037:上下標標注記案例教程

在利用ArcGIS進行制圖時&#xff0c;進行標注(Label) 或注記(Annolation) 是必不可少的。但是除了常規的標注和注記以外&#xff0c;還時常需要一些特殊的標注或注記&#xff0c;比如上標、下標等。 文章目錄一、上標標注方法二、下標標注方法一、上標標注方法 上下標代碼模板…

Redis——緩存擊穿、穿透、雪崩

1、緩存穿透&#xff1a; &#xff08;1&#xff09;問題描述&#xff1a;key對應的數據并不存在&#xff0c;每次請求訪問key時&#xff0c;緩存中查找不到&#xff0c;請求都會直接訪問到數據庫中去&#xff0c;請求量超出數據庫時&#xff0c;便會導致數據庫崩潰。如一個用…

數據庫性能系列之子查詢

前言說起數據庫&#xff0c;想必一些朋友會認為&#xff0c;數據庫不就是天天CRUD嗎&#xff1f;只要我掌握了這幾招&#xff0c;根本不在話下。是的&#xff0c;其實我也很贊同這個觀點&#xff0c;對于大多數應用程序來說&#xff0c;只掌握這些內容&#xff0c;是可以勝任日…

shell printf命令:格式化輸出語句

shell printf命令&#xff1a;格式化輸出語句注意&#xff1a;使用printf的腳本比使用echo移植性好。如同echo命令&#xff0c;printf命令可以輸出簡單的字符串&#xff1a;[rootmaster ~]#printf "Hello, Shell\n"Hello, Shellprintf不像echo那樣會自動提供一個換行…

UVa 10905 孩子們的游戲

https://vjudge.net/problem/UVA-10905 題意&#xff1a; 給定n個正整數&#xff0c;把它們連接成一個最大的整數。 思路&#xff1a; 實在是沒想到直接用string來排序了。 1 #include<iostream> 2 #include<algorithm>3 #include<string>4 using namespace …

laravel 內部驗證碼

為什么80%的碼農都做不了架構師&#xff1f;>>> 1.找到此文件composer.json 如下圖添加 "gregwar/captcha": "1.*" 行代碼 2.在命令行中執行 composer update 安裝完成后 3.找到控制器添加如下代碼 public function captcha($tmp) {//生成驗證…

k8s docker集群搭建

一、Kubernetes系列之介紹篇 1.背景介紹 云計算飛速發展 - IaaS - PaaS - SaaS Docker技術突飛猛進 - 一次構建&#xff0c;到處運行 - 容器的快速輕量 - 完整的生態環境 2.什么是kubernetes 首先&#xff0c;他是一個全新的基于容器技術的分布式架構領先方案。Kubernetes(k8…

leetcode 66 Plus One

給定一個數組&#xff0c;表示整數的各個位數&#xff0c;現要將其加上1&#xff0c;考慮進位。 vector<int> plusOne(vector<int>& digits) {int size digits.size();bool carry true;for (int i size - 1; i > 0; --i) {if (digits[i] 9 && c…