用pycharm打开FDJ项目python
URL分发器数据库
视图:django
视图通常都写在app的view,py中。而且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的全部信息,包括携带的参数以及一些头部信息等。在视图中,通常是完成逻辑相关的操做。好比这个请求使添加一篇博客,那么能够经过request来接收到这些数据,而后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是httpResponse对象或者子类的对象。浏览器
实例:app
建立book app:函数
(Django-env) python manage.py startapp book
在book app下的views.py中添加:url
from django.http import HttpResponse def book_list(request): return HttpResponse("书籍列表:")
URL映射:spa
回到FDJ目录下的urls.py中:code
from book import views urlpatterns = [ path('admin/', admin.site.urls), path('book/', views.book), ]
打开浏览器输入http://127.0.0.1:8000/book/对象
补充:
视图函数的返回的对象必须为:
URL添加参数:
有时候,url中包含了一些参数须要动态调整。好比简书某篇文章的详情页的url,是https://www.jianshu.com/p/a5aab9c4978e后面的a5aab9c4978e就是这篇文章的id,那么简述的文章详情页面的url就能够写成https://www.jianshu.com/p/<id>,其中id就是文章的id,那么如何在django中实现这种需求呢。这时候咱们就能够在path函数中,使用尖括号的形式来定义一个参数。好比我如今想要获取一本书籍的详细信息,那么应该在url中指定这个参数。示例代码以下:
在views.py中添加
def book_detil(request,book_id): #在数据库中根据id提取图书信息 text = book_id return HttpResponse(text)
在urls.py中的urlpatterns中添加
path('book/detil/<book_id>/',views.book_detil),
而后在浏览器网址栏输入http://127.0.0.1:8000/book/1234
固然能够加更多参数,好比
path('book/detil/<book_id>/<categrary>',views.book_detil),
那么views.py中的book_detil必须改为:
def book_detil(request,book_id,categrary): #在数据库中根据id提取图书信息 text = book_id #categrary....categrart的操做。。。 return HttpResponse(text)
另外一种url传参数的方式是字符串匹配:
在urls.py中的urlpatterns中添加
path('book/author',views.author_detil),
在views.py中添加
def author_detil(request): author_id = request.GET.get('id') text= author_id return HttpResponse(text)
在浏览器网址栏输入http://127.0.0.1:8000/book/author/?id=111
总结:
1.url映射:
2.url传参数:
补充:
URL命名与反URL
1.为何须要url命名?
2.如何给一个url指定名称?
urlpatterns = [ path('',views.index,name='index'), ]
应用命名空间:
#应用命名空间 app_name = 'front' urlpatterns = [ path('',views.index,name='index') ]
之后在作反转的时候就可使用'应用命名空间url名称'的方式进行反转,示例:
login_url = reverse('front:index')