「Python學習日記」Django打造屬於自己的導航頁的過程記錄(2)

「Python學習日記」Django打造屬於自己的導航頁的過程記錄(1)

因為在第一篇裡面我們已經做過了簡單的分析了,下面就直接進入正題吧。

一、創建項目(pycharm創建的方法之前已經詳細說過了)

創建名為Navigation的項目,創建完畢後再在項目根目錄下創建一個名為:static的文件夾(用於存放JS和CSS),把搜索到的導航的index複製到templates文件夾,js和css以及圖片放到static文件夾中,如圖:

「Python學習日記」Django打造屬於自己的導航頁的過程記錄(2)


二、修改配置文件(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>


「Python學習日記」Django打造屬於自己的導航頁的過程記錄(2)

遷移數據成功

五、做導航的首頁:(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>

到此代碼就全部敲完了,下面添加點數據

八、添加管理面賬戶

之前有說,這裡就不再重複了:如圖


「Python學習日記」Django打造屬於自己的導航頁的過程記錄(2)

九、啟動服務器

<code>python manage.py runserver/<code>

十、在管理員後臺添加一些數據

這個具體就不演示了。非常簡單

十一、網站建成

看看長什麼樣子:


「Python學習日記」Django打造屬於自己的導航頁的過程記錄(2)

最終成品

我添加的分類就一個,地址兩個,看著太少了,大家可以把常用的都加進去。


到此項目完成,大家可以也照著做一遍,雖說簡單,起碼也是一個提升。

有問題和建議可以告訴我,我們大家一起交流


分享到:


相關文章: