Django簡單實例

  • 2019 年 10 月 6 日
  • 筆記

簡單描述一下我們要完成的效果:

我們在瀏覽器中顯示127.0.0.1:8000/calssinfo

會顯示我們的班級名:

web開發一班

web開發二班

web開發三班

可以點擊我們的web開發一班,進入之後連接變為127.0.0.1:8000/calssinfo/1

並且顯示軟件一班人的名字。

全部步驟

創建一個項目

1、在虛擬環境中創建一個項目:

如何創建虛擬環境就不說了,可以查看昨天的文章:連接

運行:django-admin startproject test2,

創建一個test2項目。

2、創建一個應用(需要切換到test2文件夾下)

python manage.py startapp student

3、用pycharm打開

4、註冊應用

打開settings.py文件,在INSTALLED_APPS中添加student。

5、打開models.py來創建我們的數據庫,寫上:

# 班級表

class classinfo(models.Model):

classname = models.CharField()

# 學生表

class stuinfo(models.Model):

# 名字

stuname = models.CharField(max_length=20)

# 年齡 非負整數類型

stuage = models.PositiveSmallIntegerField()

# 性別

stusex = models.CharField(default='男')

# 班級id 外鍵班級表

classid = models.ForeignKey("classinfo")

# 上面的表都不需要寫id,在幫我們生成表的時候,會自動生成id

寫完上面的models,我們需要生成一個表,分兩步

第一步:生成遷移文件,python manage.py makemigrations

第二部:生成表,python manage.py migrate

6、添加數據:

6.1由於這裡運用的是sqlite數據庫,我們沒學過,不會,我們可以在管理員頁面添加。

配置管理員頁面。

修改setting文件:

LANGUAGE_CODE='zh-hans'

TIME_ZONE = 'Asia/Shanghai'

6.2 添加管理員用戶

執行命令:python manage.py createsuperuser

6.3 在admin.py中添加對classinfo表和stuinfo表的應用。

6.4 重寫models中類的__str__方法。

6.5 啟動項目,添加數據(這裡數據隨便添加)

我在classinfo表中添加了:

web開發一班,web開發二班,web開發三班

在stuinfo表中添加了兩個一班的,連個二班的,三班沒有添加。

7、添加templates模板

創建一個templates,在templates文件夾下創建一個stuinfo文件夾

在stuinfo文件夾下創建classinfo.html和stuinfo.html文件

7.1 在setting.py中配置模本路徑:

'DIRS':[os.path.join(BASE_DIR,'templates')]

7.3 在classinf.html中body中寫上:

<h1>全部班級:</h1>

在stuinfo.html中body中寫上:

<h1>該班級學生:</h1>

8、添加理由設置

在test2下的urls.py中添加:

url(r'^', include('student.urls')),

8.1 在student 下創建 urls.py文件

from django.conf.urls import url

from student import views

urlpatterns = [

url(r'^classinfo$', views.classinfo),

url(r'^classinfo/(d+)', views.stuinfo),

]

9、視圖添加

from student.models import classinfo

def show_classname(request):

c = classinfo.objects.all()

return render(request, 'student/classinfo.html', {'classinfo': c})

def show_stuinfo(request, cid):

c = classinfo.objects.get(id=cid)

s = c.stuinfo_set.all()

return render(request, 'student/stuinfo.html', {'classinfo': c, 'stuinfo': s})

10、修改模板頁面

修改classinfo.html:

<ul>

{% for i in classinfo %}

<li> <a href="/classinfo/{{ i.id }}">{{ i.classname }}</a></li>

{% endfor %}

</ul>

修改stuinfo.html:

<h3>{{ classinfo.classname }}</h3>

<table>

{% for foo in stuinfo %}

<tr>

<td>

{{ foo.stuname }}

</td>

<td>

{{ foo.stuage }}

</td>

<td>

{{ foo.stusex }}

</td>

</td>

</tr>

{% empty %}

該班級沒有人

{% endfor %}

</table>