我的django2.0学习笔记
学习阶段一(URL与视图)
创建项目
通过命令行的方式:首先进入虚拟环境,再执行命令:
#进入虚拟环境
Scripts\activate
#创建项目
django-admin startproject first_project
#进入项目后,创建应用
cd first_project
python manage.py startapp (应用名称)
运行项目
进入项目文件夹,执行命令;
python manage.py ruserver 8000(通过8000端口访问)
改变端口号
在终端:运行的时候加上一个端口号就可以了。命令为:
python manage.py runserver 9000
想让别人也能够访问网站
-
设置 host:0.0.0.0
在命令行:
python manage.py runserver 0.0.0.0 8000 -
setting.py->ALLOWED_HOSTS = [’ * ', ]
#注意要关闭自己电脑的防火墙
项目结构分析
-
manage.py : 与项目进行交互。 输入 python manage.py help 可看下能做什么事情
-
settings.py : 保存项目的所有配置信息
-
urls.py : 用来做url于视图函数映射的。以后来了一个请求,就会从这个文件中找到匹配的视图函数
-
wsig.py : 用来做部署的,不需要修改
URL分发器
- 视图:
1.视图的第一个参数永远都是request(一个HttpRequest)对象。
2.视图函数的返回值必须是HttpResponseBaes对象或者子类的对象。
from django.http import HttpResponse
def book_list(request);
return HttpResponse("书籍列表:")
- URL中添加参数:
1.采用在rul中使用变量的方式:
在path的第一个参数中,使用’<参数名>'的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找不到这个参数。另外,url中可传递多个参数。
2.采用查询字符串的方式:
在url中,不需要单独的匹配查询字符串的部分,只需要在视图函数中使用request.GET('参数名称')
的方式来获取。实例代码如下:
def author_detail(requset):
author_id = requset.GET.get('id')
text = '作者的id是: %s' % author_id
return HttpResponse(text)
因为查询字符串使用的是’GET’请求,所以我们通过requset.GET
来获取参数。并且因为GET
是一个类似于字典的数据类型,所以获取值跟字典的方式都是一样的。
- url命名
1.为什么需要url命名:
因为url是经常变化的。如果代码中写死了可能会经常改代码。给url取名字,以后使用url的时候就使用他的名字进行反转就可以了,就不需要写死url了。
2.如何给一个url指定名称:
在path
函数中,传递一个name
参数指定。实例代码如下:
#url.py --front
urlpatterns = [
path('',views.index, name='index'),
path('login/',views.login,name='login'),
]
3.应用命名空间;
在多个app之间,有可能产生同名的url,这时候为了避免反转url的时候产生混淆,可以使用由于命名空间,来做区分。定义由于命名空间非常简单,只要在app
的url.py
中定义一个叫做app_name
的变量,来指定这个应用的命名空间即可。实例代码如下:
#url.py—front
app_name = 'front'
urlpatterns = [
path('',views.index, name='index'),
path('login/',views.login,name='login'),
]
以后在做反转的时候就可以使用应用命名空间:url名称
的方式进行反转。实例代码如下:
login_url = reverse('front:login')