1.django命令方式創建專案
#1.創建django專案 django-admin startproject sky(專案名稱,隨便寫)
#2.啟動專案(3種啟動方式),啟動后訪問url,能訪問說明專案創建成功了 #默認埠啟動方式,url為:http://127.0.0.1:8000/ python3 manage.py runserver #指定埠啟動方式,url為:http://127.0.0.1:8002/ python3 manage.py runserver 127.0.0.1:8002 ##默認埠啟動方式,任何人都可以訪問,url為:http://ip:8000/ python3 manage.py runserver 0.0.0.0:8002/
#3.專案中創建子應用(一般會創建case、test_tools、user等子應用) python3 manage.py startapp user
python3 manage.py startapp case
python3 manage.py startapp test_tools
#4.創建如下檔案夾(注:是檔案夾,不是子應用) templates檔案夾:存放html檔案 (index.html等) static檔案夾:存放css、js、img檔案夾 images檔案夾:下載的圖片存放的目錄
#5.修改組態檔(位置:sky->sky->settings.py檔案) #將創建的子應用添加到組態檔中 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'user', 'case', 'test_tools' ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,'templates')],#指的django尋找html模板的目錄 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] LANGUAGE_CODE = 'zh-Hans'#改成中文的 TIME_ZONE = 'Asia/Shanghai'#改要不然時間就標準時區了 USE_TZ = False#改,要不然資料庫還是標準時區
#static檔案夾下存放所有靜態檔案,如css,js,image STATIC_URL = '/static/' #因為回傳的是一個list,所以要用元組方式 STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), ) #下載的圖片存放的位置 MEDIA_ROOT = os.path.join(BASE_DIR,'images') MEDIA_URL = '/images/'
#6.創建表(位置:sky->user->migrations->models.py) from django.db import models # Create your models here. class Category(models.Model): name = models.CharField(verbose_name='分類名稱',max_length=20,unique=True) create_time = models.DateTimeField(verbose_name='創建時間',auto_now_add=True) update_time = models.DateTimeField(verbose_name='修改時間',auto_now=True) class Meta: db_table = 'category' #創建表的時候表名 verbose_name = '分類' verbose_name_plural = verbose_name ordering = ['-create_time','name']#按創建時間倒敘排序,或按名稱升序排序 def category_fun(): return 883 class Article(models.Model): title = models.CharField(verbose_name='標題', max_length=25) # varchar content = models.TextField(verbose_name='文章內容') img = models.ImageField(upload_to='article', blank=True) category = models.ForeignKey(Category, on_delete=models.SET(category_fun), #cascade db_constraint=False,verbose_name='分類') #CASCADE,關聯的資料也會被洗掉 #models.PROTECT #受保護,不能刪,只要這個分類下面有文章,那么這個分類就不能被刪 # models.DO_NOTHING #什么也不再 #models.SET_NULL 設定成空,需要這個欄位可以為空 # models.SET_DEFAULT,設定成這個欄位的默認值,需要這個欄位有默認值 # models.SET #傳入一個方法名,用方法回傳值 #https://www.cnblogs.com/zhangqunshi/p/6953915.html 外鍵on_delete選項 #db_constraint=False,不會真的在表里面創建外鍵關聯 create_time = models.DateTimeField(verbose_name='創建時間', auto_now_add=True) update_time = models.DateTimeField(verbose_name='修改時間', auto_now=True) class Meta: db_table = 'article' # 創建表的時候表名 verbose_name = '文章' verbose_name_plural = verbose_name ordering = ['-create_time']
#7.生成表結構 python3 manage.py makemigrations #8.同步表結構到資料庫 python3 manage.py migrate4.連接(就可以鏈接上創建的資料庫了),庫里面可以看到剛才創建的article和category兩張表
以上執行成功后就可以鏈接資料庫查看新建的表兩張表了:
鏈接方式(我使用的是navicat工具):
1.鏈接名:django(這個是自己隨便起的資料庫名稱)
2.型別:現有資料庫檔案
3.資料庫檔案:
/Users/wangxiaoyu/PycharmProjects/python_automated_development/yzh/day18/sky/db.sqlite3
#9.可以往表里添加一些資料(位置:sky->user->migrations->tests.py) from django.test import TestCase import os,django # Create your tests here. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sky.settings') django.setup()#注意添加的位置 from user import models #新增兩種方式 # category = models.Category(name='python') # category.save() # models.Category.objects.create(name='Linux') models.Category.objects.create(name='Aix') models.Category.objects.create(name='java') models.Category.objects.create(name='python') models.Category.objects.create(name='shell') c = models.Category.objects.get(id='7') a = models.Article.objects.create(title='python 1天速成',content='逗你玩~',category=c)#直接寫c a = models.Article.objects.create(title='python 15天速成',content='還是逗你玩~',category_id=7)#如果知道id的話可以直接寫id a = models.Article.objects.create(title='python 30天速成',content='別想了~',category_id=7) #查pwdpwdcdcd # c1 = models.Category.objects.get(name='Aix',id=3)#只能回傳一條資料,查詢不到或查詢的資料有多條都會報錯 # print(c1.name) # a = models.Article.objects.get(id=1) # print(a.title) # print(a.category.name) # quer_set = models.Category.objects.filter(name='Aix') # c1 = quer_set[0] # print(c1.name) #刪 # d =models.Category.objects.filter(name='Aix') # d.delete() #改 # m =models.Category.objects.filter(name='python') # m.update(name='windows')
#10.添加邏輯代碼(位置:sky/user/views.py) from django.shortcuts import render,HttpResponse from . import models # Create your views here. # def user_info(request):#直接回傳資料方式 # s = '你好' # return HttpResponse(s) # def welcome(request):#回傳頁面方式 # username = 'wxy' # return render(request,'welcome.html',{'username':username}) def index(request): categories = models.Category.objects.all()#獲取category表中所有資料 articles = models.Article.objects.all()#獲取article表中所有資料 return render(request,'index.html',{'categories':categories,'articles':articles})
#11.配置跳轉url(位置:sky/sky/urls.py) from django.contrib import admin from django.urls import path from user import views urlpatterns = [ path('admin/', admin.site.urls), # path('index/', views.user_info), # path('welcome/', views.welcome), path('', views.index) ]
#12.修改index頁面(sky/templates/index.html,部分代碼展示) <div class="summary-list"> {% for article in articles %} <div class="media mb-1 mb-sm-2 p-2 p-lg-3"> <div class="align-self-center mr-2 mr-lg-3 w-25 modal-open"> <a href=https://www.cnblogs.com/xyxts/p/"./detail.html" target="_blank"> <img class="w-100 article-img" src=https://www.cnblogs.com/xyxts/p/"https://tendcode.com/cdn/article/191029/python_shell.png" alt="{{ article.title }}"> </a> </div> <div class="media-body"> <div class="text-muted mb-2 f-12"> <img class="avatar" src="https://tendcode.com/media/avatar/2019/07/27/91ef76c6a7efce1b99717f97a851f3deb48f6510.png" alt="Hopetree"> <span>Hopetree</span> <span><i class="fa fa-calendar-times-o ml-2 mr-1"></i>{{ article.create_time }}</span> </div> <h2 class="mt-0 font-weight-bold text-info f-17"> <a href=https://www.cnblogs.com/xyxts/p/"/article/yaml_and_jinja2/" target="_blank">{{ article.title }}</a> </h2> <p class="d-none d-sm-block mb-2 f-15">{{ article.content }}</p> <div class="text-muted mb-0 f-12"> <a class="cate" href=https://www.cnblogs.com/xyxts/p/"/category/hello-python/" title="查看當前分類下更多文章"> <i class="fa fa-book mr-1"></i>{{ article.category.name }}</a> <span><i class="fa fa-eye ml-2 mr-1"></i>226</span> <a href=https://www.cnblogs.com/xyxts/p/"/article/yaml_and_jinja2/#comment-block" target="_blank" title="查看文章評論"> <i class="fa fa-comments ml-2 mr-1"></i>8</a> </div> </div> </div> {% endfor %} </div> <!--文章分類--> <div class="card border-0 rounded-0 px-3 mb-2 mb-md-3" id="category-card"> <div class="card-header bg-white px-0"> <strong><i class="fa fa-book mr-2 f-17"></i>文章分類</strong> </div> <ul class="list-group list-group-flush f-16"> {% for category in categories %} <li class="list-group-item d-flex justify-content-between align-items-center pr-2 py-2"> <a class="category-item" href=https://www.cnblogs.com/xyxts/p/"./category.html" title="查看【{{ category.name }}】分類下所有文章">{{ category.name }}</a> <span class="badge text-center" title="當前分類下有6篇文章">6</span> </li> {% endfor %} </ul> </div>
訪問頁面:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/49466.html
標籤:Python
下一篇:17_Python的常用模塊
