什么是django项目?
Django项目是使用Django框架开发的Web应用程序。Django是一个用于构建高效、可扩展和安全的Web应用程序的Python框架。Django项目通常包含一个或多个应用程序,每个应用程序提供了特定功能的模块化组件。Django项目也包括配置文件、URL映射、数据库模型、视图函数和模板等组件,它们协同工作以提供完整的Web应用程序。 通过使用Django,开发者可以快速而高效地构建复杂的Web应用程序。
Django项目是使用Django框架开发的Web应用程序。Django是一个用于构建高效、可扩展和安全的Web应用程序的Python框架。Django项目通常包含一个或多个应用程序,每个应用程序提供了特定功能的模块化组件。Django项目也包括配置文件、URL映射、数据库模型、视图函数和模板等组件,它们协同工作以提供完整的Web应用程序。通过使用Django,开发者可以快速而高效地构建复杂的Web应用程序。
企业版pycharm创建django项目
社区版pycharm不能自动创建django项目,需要自己在终端创建
创建方法:进入终端(要进入当环境内)
①先cd/d进入到要创建项目的目录下;
②运行以下命令来创建一个 Django 项目:django-admin startproject 项目名称
(将 “项目名称” 替换为你自己的项目名称)
③点击回车后,再从pycharm中打开该项目文件夹即可。
①先进入终端(要进入当环境内)
②然后cd/d + 项目路径下
③输入:python manage.py startapp 【APP名】
④点击回车后生成对应的APP
①pycharm最上面:Tools==>Run manage.py Task…
②输入:startapp 【APP名】
③点击回车后生成对应的APP
将创建的APP文件夹下面的apps.py文件的类名复制到django项目下的settings.py文件下的INSTALLED_APPS列表中。
可以像下面这样写,也可以直接写APP的名。
打开django项目下的urls.py文件编写:将创建的APP文件下面的views.py文件导入然后在urlpatterns列表中添加红色框框内容;
然后我们只需要在APP文件下面的views.py里面创建一个index函数然后在里面写代码即可。
python manage.py runserver
④然后在File” -> “Settings”的django里面设置项目路径等内容;
⑤最后点击运行即可
注册好APP,并在APP文件中的views.py和django项目下的urls.py之间建立的关系后,便可将templates里的内容加载进去。
(templates文件一般要自己创建)
系统在寻找、打开并返回user_list.html文件时
1、优先去项目根目录的templates中寻找(提前先配置)
2、根据app的注册顺序,在每个app下的templates目录中寻找[不配置就是无效]
如何优先搜索根目录里的templates文件呢?
1、先在settings.py文件里的TEMPLATES列表中将自己根目录下的templates文件路径写上去
在网页中,img、js、css、plugins文件都会被当做是静态文件处理。这些文件会被放在指定的文件夹中(static),static文件夹一般在APP文件夹下面,然后我们就可以在其他文件(如html文件里面使用这些静态文件)。
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理
import pymysql
#1.连接MySQL
conn = pymysql.connect(host="127.0.0.1",port=3306, user='root',passwd="root123",charset='utf8' , db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#2.发送指令
cursor.execute("insert into admin(username,password,mobile) values('wupeigi',qwe123,'15155555555' )")
conn .commit()
# 3.关闭
cursor.close()
conn.close()
ORM可以帮我们做两件事:
1、启动数据库
2、自带工具创建数据库
打开terminal(控制台);
先cd/d 【项目路径(manage.py文件所在路径下)】;
然后输入:python manage.py makemigrations;
再输入:python manage.py migrate
来生成数据表。
点击Tools==>Run manage.py Task…;
①先在下面会出现一个命令框输入makemigrations
生成迁移文件;
②再执行migrate
生成数据库表;
运行完之后,在终端打开mysql数据库发现自动生成了一个数据表:
注意:在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
1、手动输入一个值
2、设置默认值
age = models.IntegerField(default=2)
3、允许为空
data = models.IntegerField(null=True, blank=True)
删除列时可直接在models.py里面删除,然后再在终端中运行前面两行代码
python manage.py makemigrations;
python manage.py migrate;
以后在开发中如果想要对表结构进行调整,在models.py文件中操作类即可。
from myapp.models import Department,UserInfo
def orm(request):
# 测试ORM操作表中的数据
# ------1、新建数据-------
# Department.objects.create(title="销售部")
# Department.objects.create(title="IT部")
# Department.objects.create(title="运营部")
# UserInfo.objects.create(name='oyc',password=123,age=19)
# UserInfo.objects.create(name='tz',password=135,age=29)
# UserInfo.objects.create(name='th',password=233,age=9)
# ------2、删除数据-------
# UserInfo.objects.filter(id=3).delete()
# UserInfo.objects.all().delete()
# ------3、获取数据-------
# 3、1获取符合条件的所有数据
# data_List =[对象,对象,对象] QuerySet类型
data_list = UserInfo.objects.all()
for obj in data_list:
print(obj.id,obj.name,obj.password,obj.age)
# # data_List = [对象,]
# data_list = UserInfo.objects.filter(id=1)
# print(data_list)
# # 3、2获取第一条数据【对象】
# obj = UserInfo.objects.filter(id=1).first()
# print(obj.id,obj.name,obj.password,obj.age)
# ------4、更新数据-------
# UserInfo.objects.all().all().update(password = 123456)
# data_list = UserInfo.objects.filter(id=1).update(age = 999)
# data_list = UserInfo.objects.filter(name='').update(age = 999)
return HttpResponse("成功!")
(views.py)
def info_add(request):
if request.method == 'GET':
return render(request,'info_add.html')
# 获取用户提供的数据,页面中是POST,点击提交后能提交到后台
user = request.POST.get("user")
pwd = request.POST.get("pwd")
age = request.POST.get("age")
# 添加到数据库
UserInfo.objects.create(name=user, password=pwd, age=age)
return redirect('http://127.0.0.1:8001/info/list')
HTML页面中的body代码如下:
<body>
<form method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用户名">
<input type="text" name="pwd" placeholder="密码">
<input type="text" name="age" placeholder="年龄">
<input type="submit" value="提交">
form>
body>
def info_delete(request):
nid = request.GET.get('nid')
# 通过id来删除想删除的信息字段
UserInfo.objects.filter(id=nid).delete()
# 让跳转回显示用户信息的页面
return redirect('http://127.0.0.1:8001/info/list')
layout.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>标题</h1>
<div>
{% block cotent %}
{% endblock %}
</div>
<h1>底部</h1>
</body>
</html>
套用母版的HTML
{%extends 'layout.html'%}
{% block content %}
<h1>首页</h1>
{%endblock%}