django的简单学习
前言
以下項目實現基于一個投票系統
安裝django
命令行安裝
pip install django
pycharm安裝
pycharm的setting里找到這個,點擊+號,搜索django
點擊Install Package
新建一個django項目
命令行創建項目(windows)
在pip安裝完之后,在python的Scripts目錄里有 django-admin.exe
:::tips
django-admin.exe startproject [項目名稱]
:::
目錄結構是這樣
命令行創建項目(linux)
python3 -m django startproject my_django[項目名稱] 或者 django-admin startproject my_django[項目名稱]
目錄結構是這樣
pycharm創建項目
安裝完django后,new project可以看到django
建好之后的django是這樣的目錄結構
pycharm創建的django項目多了一個templates目錄
目錄結構分析
- manage.py
一個類似于django-admin.exe的管理腳本,可以對你建立的django項目進行管理,每次新建一個django項目都會生成這個文件
- init.py
一個空文件,標識這個文件夾是一個包
- asgi.py
作為你的項目的運行在 ASGI 兼容的 Web 服務器上的入口,處理網絡請求的文件
- wsgi.py
作為你的項目的運行在 WSGI 兼容的Web服務器上的入口,也是處理網絡請求的文件
- settings.py
django項目的配置文件
- urls.py
Django 項目的 URL 聲明,就像你網站的“目錄”,其實就是常說的路由配置
- templates
模板文件放置的文件夾,html等等文件
啟動web服務
python3 manage.py runserver
創建應用app
一個項目可以有很多應用,一個應用也可以被很多項目使用,應用app相當于一個功能模塊python3 manage.py startapp app1
目錄結構如下
- admin.py
django默認提供的后臺管理,不需要修改
- apps.py
一些關于創建的app的信息,不需要修改
- models.py
數據庫模型文件
- views.py
視圖文件,對web頁面進行設計
- migrations
數據庫遷移文件,數據的每一次變更,這里就會記錄
- tests.py
測試文件
注冊app
創建app后,要使用得先注冊,找到settings.py,寫入最后一行
這樣就成功注冊了app1這個應用,開始對app1進行開發
對app進行開發
先編寫視圖文件views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello World!")
一個經典的Hello world,這里是對http請求進行了處理,response返回一個Hello World!
在app1/ ,創建一個urls.py,默認是沒有這個文件的,編寫代碼,把之前views編寫的index函數給包含進去
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="index")
]
在my_django/urls.py繼續編寫,包含app1.urls
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls'))
]
啟動web服務python3 manage.py runserver,訪問app1
數據庫配置
默認數據庫配置
django默認使用的是sqlite數據庫,還是settings.py文件里看
如果想使用其它數據庫,可以在這里進行修改
進行數據遷移應用
python3 manage.py migrate 對INSTALLED_APPS里注冊的app進行一個遷移應用,每當注冊了的app的數據發生遷移,都會進行一個記錄
創建數據庫模型
在這個投票應用中,需要創建兩個模型:問題 Question 和選項 Choice。Question 模型包括問題描述和發布時間。Choice 模型有兩個字段,選項描述和當前得票數。每個選項屬于一個問題
編寫app1/models.py
from django.db import models
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200) # 創建一個字符串字段
pub_date = models.DateTimeField("date published") # 創建一個date字段
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE) # 標識為外鍵
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0) # 創建一個數字型字段,默認值設為0
激活模型
python3 manage.py makemigrations app1,生成一個遷移
查看一下遷移所做的sql操作,python3 manage.py sqlmigrate app1 0001,可以看到已經幫我們創建了表
最后執行python3 manage.py migrate,應用一下所做的修改
這個 migrate 命令選中所有還沒有執行過的遷移(Django 通過在數據庫中創建一個特殊的表 django_migrations 來跟蹤執行過哪些遷移)并應用在數據庫上 - 也就是將你對模型的更改同步到數據庫結構上。
API的使用
python3 manage.py shell,對剛才創建的模型進行一個使用
對模型文件進行一下修改,讓Question.objects.all()所展示的信息更為直觀
from django.db import models
# Create your models here.
class Question(models.Model):
def __str__(self):
return self.question_text
question_text = models.CharField(max_length=200) # 創建一個字符串字段
pub_date = models.DateTimeField("date published") # 創建一個date字段
class Choice(models.Model):
def __str__(self):
return self.choice_text
question = models.ForeignKey(Question, on_delete=models.CASCADE) # 標識為外鍵
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0) # 創建一個數字型字段,默認值設為0
管理員賬戶使用
創建一個管理員用戶
賬號 admin:admin123
創建之后訪問/admin,登錄進入后臺
向管理頁面加入投票應用
編寫app1/admin.py
from django.contrib import admin
from .models import Question
# Register your models here.
admin.site.register(Question)
模板文件
模板文件的引用
在app1下創建一個templates文件夾,在該文件夾下繼續創建一個index.html文件
{{question_text}}
編寫views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
# Create your views here.
def index(request):
template = loader.get_template("index.html")
context = {
"question_text": "123456"
}
return HttpResponse(template.render(context, request))
模板語法的使用
上面是一種最簡單的變量引用方法
循環語句
<h1>
{% for i in n %}
<h2>{{i}}</h2>
{% endfor %}
</h1>
from django.shortcuts import render?
from django.http import HttpResponse
from django.template import loader
# Create your views here.
def index(request):
n = ['f12', 'f13', 'f14']
return render(request, 'index.html', {'n': n})
條件語句
<h1>
{% if i == "f12" %}
<h2>f12 is handsome</h2>
{% else %}
<h2>f12 is very handsome</h2>
{% endif %}
</h1>
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
# Create your views here.
def index(request):
i = 'f12'
return render(request, 'index.html', {'i': i})
總結
以上是生活随笔為你收集整理的django的简单学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术文档 | 将OpenSCA接入Git
- 下一篇: 文心一言 VS 讯飞星火 VS chat