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>