电商网站营销,做网站怎么挣钱赚钱,专做hip hop音乐的网站,集团网站建设特点助君1.环境搭建#xff1a;
#xff08;a#xff09;开发环境#xff1a;pycharm
#xff08;b#xff09;虚拟环境#xff08;可有可无#xff0c;优点#xff1a;使用虚拟环境可以把使用的包自动生成一个文件#xff0c;其他人需要使用时可以直接选择导入包#xff…1.环境搭建
a开发环境pycharm
b虚拟环境可有可无优点使用虚拟环境可以把使用的包自动生成一个文件其他人需要使用时可以直接选择导入包不需要额外的环境搭建。缺点占一丢丢储存
cDjango下载下载到pycharm根目录。打开项目目录在资源管理器中的项目目录中打开终端然后直接pip。或者在官网中下载。
d创建Django项目左上角新建Django项目展开更多设置可以选择创建html模版和初始app填写名字才会创建。创建项目之后会自动创建很多个py文件 2.HTTP通信过程
当我们访问地址时 这里访问本地地址其中8000为端口号index为路由。
我们指定当我们访问路由为index我们可以在urls.py中找到路由所对应的视图函数那么就会自动运行我们的视图函数。例如这里写了路由index对应的函数为index所以他会去找index函数这个函数我们写在user.views里所以我们这里要先进行import导入。 user是我们创建app时写的app名字后续也可以添加在djangoproject目录里的setting.py文件中 如果一开始在创建项目的时候写了app名那么这里就不用写了否则会报错。
在user这个app里我们创建一个templates文件夹用来储存html模版。 在views.py文件中我们写了视图函数index并且在我们urls.py中import导入了这个函数库于是我们会执行这个函数并在这里返回一个html文件。
3.运行项目
在pycharm中打开终端在经过上述步骤之后可以直接输入
python manage.py runserver
这会执行我们的整个项目并给予一个地址可以让我们观察项目返回内容。 ctrlc可以中断这个程序否则他会一直运行。 4.数据库迁移
在models.py中写入数据库数据后在终端中运行
python manage.py makemigrations
migrations文件夹会多出一个文件。
导入数据后再
python manage.py migrate
迁移数据这时 在data文件中就可以可视化查询数据库内容并修改。 我们可以在视图文件中导入models函数models里面我们写的函数就可以拿出来用这里用到Usermodel函数加上后缀名objects.all可以返回数据库所有的内容。再利用render命名一个users左来储存users右的所有数据并导入html中。 在html中我们就可以利用for循环遍历数据库所有的内容。
html如下 结果如下 5.后台管理
我们在admin.py中导入models的类再在后台管理系统中运行。 在终端中创建超级用户管理员
python manage.py createsuperuser
输入账号密码密码不可视就能创建成功。路由选择admin打开网址就能打开后台管理系统 里面存储的数据和数据表里的内容一致可以实时修改。 6.路由传参的页面跳转反向解析 首先在urls中的路由里写入传参的形式。
int:id
这个的意思就是传入的数据是整数跟在路由后面。比如传入为1那么网址就是..../detail/1/
传入数据可以直接网址上面传入也可以在函数中传入例如
在视图函数中添加
def detail(request,id):cUsermodel.objects.get(pkid)return render(request,detail.html,{users:c}
这里的c相当于在model中获取了数据虽然model只写了数据库结构但是model.objects可以直接导入数据库内容别管怎么来的这就是django再用get方法只获取id的内容。这里获取哪一个呢根据我们传入的id决定。
id由哪里来我们写一个html交互数据库利用循环展示每一个数据的内容。我们点击某一个超链接对应的数据库内容那么就会获得这个超链接对应的数据库内容的id把它反向解析到url中。detail是我们提前在urls.py里写好的url的名字。 1.htmlname‘index’: !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
h1 Hello world /h1
ul{% for a in users %}a href{% url detail a.id %} {{ a.name }},{{ a.age }}/a{% endfor %}
/ul
/body
/html detail.html: !DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
h1{{ users.id }}{{ users.sex }}/h1
/body
/html 这样我们就可以根据id不同在同一个页面显示不同的内容。 result Rec 0001 再利用反向解析写个返回键 为什么href不直接跳转到1.html反而要给一个name为index的url地址呢
直接跳转到html没办法传入数据但是跳转到路由会先执行视图函数在视图函数中我们可以先获取数据再返回渲染的html这样在第二次通过html获取数据的时候才不会报错。不然html不知道在哪里获取数据。