第一个django项目
Posted Noplablem
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个django项目相关的知识,希望对你有一定的参考价值。
部分转自:https://www.cnblogs.com/linagcheng/p/9932302.html
1.项目启动:
pycharm启动:点击绿色的小三角,直接启动django项目(小三角的左边是django名字)
"C:\\Program Files\\JetBrains\\PyCharm 2018.3.3\\bin\\runnerw64.exe" C:\\Users\\zte\\AppData\\Local\\Programs\\Python\\Python35\\python.exe C:/Users/zte/PycharmProjects/untitled3/manage.py runserver 8000 Performing system checks... System check identified no issues (0 silenced). You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run \'python manage.py migrate\' to apply them. January 31, 2019 - 11:28:44 Django version 2.1.5, using settings \'untitled3.settings\' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
2.app
在Django中,APP可以用以下类比
forum_api--------------------项目
api------------app01
forum
------------ app02
1、app创建
方式一:在terminate命令行创建: python manage.py startapp app01(app名字)
亦可:pycharm菜单栏中 Tools --> run manage.py task ,然后在terminate输入命令 startapp app01(app名字)
方式二:在创建项目的时候,直接创建app
2、app注册
- 方式一创建app
# 在配置文件的 settings.py 中的 INSTALLED_APPS 中,添加
\'app01\' # app名字
或者
\'app01.apps.App01Config\'
- 方式二创建app
# pycharm会自动注册app,即 INSTALLED_APPS 中
\'app01.apps.App01Config\'
在注册过一次以后,不能再次注册
二、模板配置
1、创建模板文件
在Django中创建一个templates 文件夹,用于存放前台的html文件
2、模板注册
# 在配置文件的settings.py中的 TEMPLATES 中配置路径
\'DIRS\': [os.path.join(BASE_DIR, \'templates\')]
1.Template(存放HTML文件的配置)
2.配置静态文件的存放位置
STATIC_URL = \'/static/\' #静态文件夹的别名(在HTML文件中用的)
STATICFILES_DIRS=[ #静态文件夹的真正路径,# static文件夹刚开始是没有的,你必须自己在根路径下创建,创建好了在 STATIC_URL=\'/static/\' 这行代码下写
os.path.join(BASE_DIR,"static")
]# 变量名必须是 STATICFILES_DIRS,必须大写,列表里面可以多个路径,看你自己的需求,配置好这个后,你就可以在你的html页面中
导入相关的静态文件了,比如导入一个css文件,我写个伪代码 <link rel="stylesheet" href="/static/first.css"> 注意注意了:上面代码中的static不是我们自己创建的static文件夹,它对应的是 settings.py 中的STATIC_URL = \'/static/\'这句代码,
假如这句代码中\'/static/\'变成\'/1/\'的话,那么html文件中导入css的那句代码中的"/static/mycss.css"也应变成"/1/mycss.css",他们两个是相对应的。
3.注释掉csrf相关的中间文件
1 MIDDLEWARE = [ 2 \'django.middleware.security.SecurityMiddleware\', 3 \'django.contrib.sessions.middleware.SessionMiddleware\', 4 \'django.middleware.common.CommonMiddleware\', 5 # \'django.middleware.csrf.CsrfViewMiddleware\', 6 \'django.contrib.auth.middleware.AuthenticationMiddleware\', 7 \'django.contrib.messages.middleware.MessageMiddleware\', 8 \'django.middleware.clickjacking.XFrameOptionsMiddleware\', 9 ]
在项目下的settings.py中ROOT_URLCONF = "项目名.urls“
ROOT_URLCONF = \'xp.urls\'
前台发来请求会先去项目下的test3/xp.py文件进行正则匹配找到应该执行的视图函数。
四、数据库连接配置
1、连接sqlite数据库
pycharm默认连接数据库,默认已配置好,无需再配置
2、连接mysql数据库
# 1.在配置文件的settings.py中的 DATABASES 中配置路径 \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'HOST\': \'127.0.0.1\', \'PORT\': 3306, \'USER\': \'root\', \'PASSWORD\': \'\', \'NAME\': \'wzhe\', } # 2.在__init__.py文件中配置 import pymysql pymysql.install_as_MySQLdb()
五、get请求和post请求
get:获取数据,页面,携带数据是不重要的数据(数据量有大小限制),数据会显示出来,如果是用户名密码,这种方式 就不安全
post:往后台提交数据
六、新手三件套
1 render--返回页面 默认会去templates里找,注意路径 2 redirect--重定向 3 HttpResponse # 本质:都是返回HttpResponse的对象
七、登录功能案例
# 1. login.html ***重点***1. action:提交到后台的地址三种写法: 1. http://127.0.0.1:8000/login 2. /login/ 推荐用 3. 空 2. method post方式 3. <input type="submit" value="提交">或<button></button> type不可以是button <form action="http://127.0.0.1:8000/login" method="post"> <p>用户名:<input type="text" name="name" class="form-control"></p> <p > 密码:<input type="password" name="pwd" class="form-control"> </p> <input type="submit" value="提交"> </form> # 2.视图层: 1 request.method ----前台提交过来请求的方式 2 request.POST(相当于字典)----post形式提交过来的数据,(http请求报文的请求体中) 3 request.POST.get(\'name\') ----推荐用get取值(取出列表最后一个值) 4 request.POST.getlist(\'name\')-----取出列表所有的值_ 5 前台get方式提交的数据,从request.GET字典里取 # 3.链接数据库(防止注入,推荐以下写法) cur.execute(\'select * from user where name=%s and password=%s \',[name,pwd])
以上是关于第一个django项目的主要内容,如果未能解决你的问题,请参考以下文章
如何使用引导程序和 for 循环在 django 中创建电影片段?
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段