【Django】Day2-Django入門

Django入門

Django入門

一.新建index頁面

1.新建項目

使用manage.py創建一個blog這裏會出現新的一個應用

python manage.py startapp blog
文件名 描述
init.py 告訴Python 這是一個包
apps.py 在新的Django 版本中新增,用於應用程序的配置。
admin.py 映射models 中的數據到Django 自帶的admin 後臺
models.py 數據模型——對應數據庫的相關操作
tests.py 單元測試
views.py 視圖函數(即MVC 中的控制器)——控制向前端顯示哪些數據。
migrations 這是一個包,用於記錄models中的數據變更

2.把這個應用加入到Django的項目中

在項目文件的setting.py中。將應用名稱(blog)添加到元組的末尾,如下所示。

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
······
'blog',
)

3.新建一個urls

在項目的urls文件中配置我們blog應用的index頁

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',views.archive),
    path('index/',views.index)
]

4.編寫對應的index函數

在blog應用的view文件新建

def index(request):
    return HttpResponse("Hello Django!")

5.請求路徑

在瀏覽器輸入以下就可以訪問

http://localhost:8000/index/
http://127.0.0.1:8000/index/

二.新建一個模板index頁面

對於一個頁面可以使用更加好的模塊來展示,可以使用html展示

1.新建一個html

在對應目錄創建templates/index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Django Page</title>
</head>
<body>
<h1>Hello Django!</h1>

</body>
</html>

2.修改view中返回數據

原先

def index(request):
    return HttpResponse("Hello Django!")

修改之後

from django.shortcuts import render
def index(request):
    return render(request,"index.html")

這裏使用Django模塊的render函數

Django 工作流

  • 1.urls.py 中urlpatterns添加路徑,確定跳轉的項目函數
  • 2.在項目的新增對應的函數
  • 3.在函數中加載已有 html文檔

三.開發模式

MTV開發模式:也就是把數據和表現邏輯分割開的邏輯

MVC模式

Model-View-Controller(MVC):

  • Model 代表數據存取層,

  • View 代表的是系統中選擇顯示什麼和怎麼顯示的部分

  • Controller 指的是系統中根據用戶輸入並視需要訪問模型,以決定使用哪個視圖的那部分。

  • 但是在Django中使用的是MTV模式:
    是模型(Model)、模板(Template)和視圖(Views),

四.新建一個Blog

1.新建一個博客模型

使用model 文件用於存放數據模型,這裏使用了blog的模型

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

這裏新建了一個BlogPost類,並添加了博客裏面的屬性。

  • title:用CharField類型,並限制了最大長度
  • body:使用TextField類型
  • timestamp:使用dataTimeField 類型

2.Model轉換成中間件

在項目cmd中輸入

python manage.py makemigrations 

會出現以下結果

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model BlogPost

可以看到blog項目新建了一個BlogPost的類

3.數據SQLite

Django默認的就是

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/tmp/mysite.db', # use full pathname to avoid confusion
}
}

3.生成blog的表

然後Django需要使用上面給出的鏈接信息來連接數據庫,這裏需要設置應用程序需要的表。

python manage.py syncdb

這裏輸入之後cmd表示syncdb命令不存在。因爲Django1.9之後該命令被刪除,所以,需要使用migrate命令替代syncdb

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... OK


4.註冊數據庫表

在admin賬號登錄之後是沒有看到用戶類的
需要在blog項目的admin文件中註冊

from blog.models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title','timestamp')

admin.site.register(BlogPost,BlogPostAdmin)

在之前的註冊的模塊是BlogPost,所以在admin的頁面展示的也是BlogPost

5.配置html模板

在應用中新建一個archive.html文件用於存放模板

\blog\templates\archive.html

文件內容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- archive.html -->
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
<hr>
{% endfor %}
</body>
</html>

6.配置urls路徑

修改項目的urls路徑

from blog.views import archive

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',archive)
]

7.虛假視圖展示

在view文件中配置

def archive(request):
    post = BlogPost(title='mocktitle', body='mockbody',
                    timestamp=datetime.now())
    return render_to_response('archive.html', {'posts': [post]})

使用虛假視圖驗證之後發現沒有問題就可以換成真實視圖

8.真實視圖展示

在view文件修改成

from blog.models import BlogPost

def archive(request):
    posts = BlogPost.objects.all()
    return render_to_response('archive.html', {'posts': posts})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章