01.Django學習之安裝,建立專案,傳參,MySQL資料庫,靜態檔案配置和模板的使用

Thinkgamer_gyt發表於2015-12-03
1:安裝
pip install Django==1.8.6

2:建立專案
 進入某個目錄執行 django-admin.py startproject myweb(此為專案目錄)

 建立子目錄:
        先進入 myweb目錄,然後執行 manage.py startapp blog,ok子目錄完畢
        在SName的views.py中新增如下程式碼:
            from django.http import HttpResponse
            def hello(request):
                return HttpResponse("Hello World")


   配置url:
        在myweb的settings.py 中INSTALLED_APP = ('xxxx','xxx','xxx','blog',)加上blog
        在同級目錄的urls.py中 配置url,這裡有兩種方式
            (1)直接定位   url(r'^blog/index/$','blog.views.hello'),
            (2)定位到子目錄
                    在myweb 中的urls.py中加入url(r'^blog/', include('blog.urls'))
                 再定位到具體檔案
                     在blog中的urls.py中加入url(r'^blog/$', 'blog.views.hello')

    啟動服務:
          進入myweb目錄,執行manage.py runserver

    瀏覽器訪問:

    至此專案建立已基本完成
    
3:使用模板
    在blog目錄下建立templates資料夾,將index.html放入
    blog的views.py修改如下:
        from django.http import HttpResponse
        from django.template import loader,Context
        def hello(request):
                t = loader.get_template('index.html')
                c = Context({})           #用於傳引數    
                return HttpResponse(t.render(c))
         瀏覽器訪問:127.0.0.1:8000/blog/hello



4:配置CSS,js,images.....等靜態檔案目錄
    在FName下建立static目錄,將css,images等資料夾拷貝到此目錄下
    在FName的settings.py  STATIC_URL = '/static/' 下加上如下檔案
    STATIC_ROOT = os.path.join(os.path.dirname(__file__),'../static')
    STATICFILES_DIRS = (
        ('css',os.path.join(STATIC_ROOT,'css').replace('\\','/') ),  
        ('js',os.path.join(STATIC_ROOT,'js').replace('\\','/') ),
        ('images',os.path.join(STATIC_ROOT,'images').replace('\\','/') ),
        ('upload',os.path.join(STATIC_ROOT,'upload').replace('\\','/') ),
    )
    當然這裡也可以簡化一下,只需要如下的配置也可以: 
STATIC_URL = '/static/'
STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static')
)
    在模板網頁中使用的時候加上/static/  如:
    <link href="/static/css/index.css" rel="styleshet" type="text/css" />
  其他的如上
 
5:傳遞引數:
   傳遞引數型別為:Python的變數,函式,類....
    ({name}):表示變數

6:URL傳值(使用正規表示式)
    myweb專案下的url
    urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/',include('blog.urls')),
]
    複製myweb下的url到blog目錄下,修改如下
    urlpatterns = [
url(r'^time/$','blog.views.time'),
url(r'^foo/(\d{4})/(\w+)/$','blog.views.foo'),
]


    def time(request):
t = loader.get_template("time.html")
id = request.GET.get("id")
name = request.GET.get("name")
c = Context({"title":"thinkgamer","time":datetime.datetime.now(),"id":id,"name":name})
return HttpResponse(t.render(c))
    <body>
<p>time is {{ time | date:"Y-m-d"}}</p>
<p>id is {{ id }}</p>
<p>name is {{ name }}</p>
</body>
    方式二:http://127.0.0.1:8000/blog/foo/1234/asdd/
    def foo(request,p1,p2):
t = loader.get_template("time.html")
c = Context({"title":"thinkgamer","time":datetime.datetime.now(),"id":p1,"name":p2})
return HttpResponse(t.render(c))
    <body>
<p>time is {{ time | date:"Y-m-d"}}</p>
<p>id is {{ id }}</p>
<p>name is {{ name }}</p>
</body>
    url(r'^foo/(\d{4})/(\w+)/$','blog.views.foo'),

7:MySQL資料庫的簡單配置
    連線
    myweb中的settings.py
     DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'csvt',
                'USER':'root',
                'PASSWORD':'123456',
                'HOST':'',
                'PORT':'',
            }
       }     
    blog的models.py檔案
        from django.db import models

        class Employee(models.Model):
             name=models.CharField(max_length=20)
     同步資料庫

首先,用下面的命令驗證模型的有效性:

     python manage.py validate
        執行下面的命令來生成 CREATE TABLE 語句
     python manage.py sqlall blog
輸出的是sql語句,但此時並沒有在資料庫中建立資料表
     同步資料庫
     python manage.py syncdb
     (此時可能會報錯,解決辦法是:刪除blog下的migrations目錄,重新執行python manage.py syncdb即可
     反向同步
     python manage.py inspectdb(檢視語句) 
     python manage.py > inspectdb 
> blog/models.py

相關文章