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>