初学django-3

上一节课已经教大家成功运行起来了django,这节课就教大家开发属于自己的web项目。

首先使用pycharm打开上一节创建的django项目,然后点击下面的Terminal 然后输入命令:python manage.py startapp [name] (name是自己创建的app名称,以book为例吧)。

也可以在电脑终端进入到的创建的项目中,然后切换一个虚拟环境,再运行:python manage.py startapp book即可创建。

最后输入命令:deactivate退出虚拟环境。

视图:

视图一般写在创建的app的views.py中,并且视图的第一个参数永远是request(一个HttpRequest)对象,这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等,在视图中,一般是完成逻辑相关的操作,比如这个请求是添加一篇博客,那么可以通过request来接受这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器,视图函数的返回值必须是HttpResponse对象或子类的对象。

如下:

1
2
3
from django.http import HttpResponse
def book(request):
return HttpResponse('图书首页')

URL映射:

视图写完以后,要与URL进行映射,也就是用户在浏览器中输入URL时可以到这个视图函数。在用户输入某个URL,请求我们网站时,django就会从项目的urls.py中寻找对应的视图,在urls.py中有一个urlpatterns变量,以后django就会从这个变量中读取所有的匹配规则,匹配规则需要使用django.url中的path函数进行包裹,这个函数会根据传入的参数返回urlpatterns或者是urlResolver的对象。

如下:

1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import path
from book import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',views.book)
]

这样运行django项目后, http:/ /127.0.0.1:8000/就访问不了了,因为urls.py中没有对应的url,访问 http:/ /127.0.0.1:8000/book/就可以看到页面显示”图书首页“了。

有同学可能可能会问,为什么在没有添加上面这些代码时 http:/ /127.0.0.1:8000/就可以访问成功呢,其实那是django自带的页面,告诉你的django项目正常运行起来了,这是django的初始状态,没有添加任何url的项目,只要添加任何的url,原始页面就不存在了,如果你想 http:// 127.0.0.1:8000/该网址可以正常访问,你可以在urlparterns变量中添加一个下面这样的url即可。

1
2
比如:
path('',views.book)

URL中添加参数:

url映射:

1.为什么回去urls.py文件中去寻找映射呢”

是因为在setting,py文件中配置了’ROOT_URLCONF’为’urls.py’。这样django的url都会去urls.py中去寻找。

2.要记住在’urls.py’中的映射,都要放在’urlpatterns’这个变量中。

url传递参数

1.采用在url中使用变量的方式:在path的第一个参数中,使用’<参数名>’的方式可以传递参数。然后在视图函数中也要写一个函数,视图函数中的函数必须和url中的参数名称保持一致,不然找不到这个这个参数,另外,url中可以传递多个参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#views.py
from django.http import HttpResponse
def book(request,book_id):
text='您的图书代码是:%s'%(book_id)
return HttpResponse(text)

#urls.py
from django.contrib import admin
from django.urls import path
from book import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/<book_id>/',views.book),
]

输入http:/ /127.0.0.1:8000/book/< id >即可访问。(‘<>’不用加,id取任意值)

2.采用查询字符串的方式:在url中,不需要单独的匹配查询字符串的部分.只需要在视图函数中使用’request.GET.get(‘参数名称’)’的方式来获取。示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#views.py
from django.http import HttpResponse
def book(request):
book_id=request.GET.get('id')
#或者book_id=request.GET['id']
text='您的图书代码是:%s'%(book_id)
return HttpResponse(text)

#urls.py
from django.contrib import admin
from django.urls import path
from book import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',views.book),
]

输入http:/ /127.0.0.1:8000/book/? id =< num >即可访问。(‘<>’不用加,num取任意值)

hey!baby,站住,点它!