「Python學習日記」Django打造屬於自己的導航頁的過程記錄(1)
因為在第一篇裡面我們已經做過了簡單的分析了,下面就直接進入正題吧。
一、創建項目(pycharm創建的方法之前已經詳細說過了)
創建名為Navigation的項目,創建完畢後再在項目根目錄下創建一個名為:static的文件夾(用於存放JS和CSS),把搜索到的導航的index複製到templates文件夾,js和css以及圖片放到static文件夾中,如圖:
二、修改配置文件(Navigation\Navigation\settings.py)
由於是pycharm創建的,項目也不大,就現在自帶的sqlite3就行。
所以就修改如下代碼:
<code># 設置語言和時區 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' STATIC_URL = '/static/' # 這句沒有,要自己加上,STATICFILES_DIRS就是靜態文件的路徑 STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)/<code>
三、models:(Navigation\naga\models.py)
由於上篇已經做了分析,我們就直接開始定義了,代碼如下:
<code>from django.db import models # Create your models here. # Classif和Category共用的字段類 class Share(models.Model): isshow = models.BooleanField(verbose_name="是否顯示", default=True) sort = models.IntegerField(verbose_name="排序", default=0) updata_time = models.DateTimeField(verbose_name="更新時間", auto_now = True) add_time = models.DateTimeField(verbose_name="添加時間", auto_now_add = True) class Meta: # 表示為抽象類,不生成代碼,這裡只做繼承用 abstract = True # 繼承自Share,由於Share繼承自models.Model,所以這裡就不用再繼承了 class Classif(Share): name = models.CharField(verbose_name="分類", max_length=10, null=False, unique=True) # Meta和__str__之前都有說過,這裡就不重複了 class Meta: verbose_name = "導航分類" verbose_name_plural = verbose_name def __str__(self): return self.name class Category(Share): name = models.CharField(verbose_name="名稱", max_length=255, null=False) address = models.CharField(verbose_name="地址", max_length=255, null=False) # 設置外鍵,與Classif關聯節氣 fork = models.ForeignKey(to=Classif, on_delete=models.CASCADE) class Meta: verbose_name = "導航地址" verbose_name_plural = verbose_name def __str__(self): return self.name/<code>
四、生成遷移代碼和遷移數據
<code># 生成遷移代碼 python manage.py makemigrations # 遷移數據 python manage.py migrate/<code>
五、做導航的首頁:(Navigation\templates\index.html)
把沒用的給刪掉(想要源碼的可以私信我,太長了,就不貼出來了),修改一下
主要修改的是:
<code># 這兩行配置JS和CSS的路徑 # 圖片的路徑 # 把多餘的div刪掉,我們用for循環 # 注意不要刪多了哦{{ classif.name }}
# 一查多的方法,classif.category_set.all # classif 是分類 # category_set獲取屬於上面分類的導航地址 # category是models定義的Category類第一個字母小寫,加上_set {% for cat in classif.category_set.all %} {{ cat.name }}# 一查多的方法,classif.category_set.all # classif 是分類 # category_set獲取屬於上面分類的導航地址 # category是models定義的Category類第一個字母小寫,加上_set {% for cat in classif.category_set.all %}{% endfor %}
{% for classif in classifs %}{% endfor %}
/<code>
六、配置urls(Navigation\Navigation\urls.py)
<code>from django.contrib import admin from django.urls import path from naga import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.index), ] /<code>
七、配置views(Navigation\naga\views.py)
<code>from django.shortcuts import render from .models import * def index(request): classifs = Classif.objects.filter(isshow=True).all() return render(request, "index.html", locals()) /<code>
到此代碼就全部敲完了,下面添加點數據
八、添加管理面賬戶
之前有說,這裡就不再重複了:如圖
九、啟動服務器
<code>python manage.py runserver/<code>
十、在管理員後臺添加一些數據
這個具體就不演示了。非常簡單
十一、網站建成
看看長什麼樣子:
我添加的分類就一個,地址兩個,看著太少了,大家可以把常用的都加進去。
到此項目完成,大家可以也照著做一遍,雖說簡單,起碼也是一個提升。
有問題和建議可以告訴我,我們大家一起交流