输入了一些数据之后,就能通过交互式的编程方式查看这些数据了。
python manage.py shell
>>> from learning_logs.models import Topic
>>> Topic.objects.all()
[, ]
应该是帮你执行了数据库的操作。
要这样还不如直接打开db文件看看。
使用Django创建网页的几个步骤:
1。定义URL
2。编写视图函数
3。编写模板。
ps:但是讲真之前有好几个网页应该是都Django给弄好的。
当你在地址栏输入一个地址的时候,这个地址被映射到特定的视图——其实也就是一般所说的路由。
这个视图函数获取并处理网页需要的数据。视图函数通常调用一个模板,再渲染(其实就是把数据填进模板用的地方)。
打开learning_log下面的文件urls
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
前两行导入了为项目和管理网站管理URL的函数和模块。这个文件的主体定义了变量urlpatterns。
在这个针对整个项目的urls.py文件中, 变
量urlpatterns 包含项目中的应用程序的URL。 之后的代码包含模块admin.site.urls , 该模块定义了可在管理网站中请求的所有URL。
我们需要包含learning_logs的urls。
因为learning_logs是一个应用啊,而learning_log是一个项目,这个项目要包含所有程序的urls。
learning_log中的urls
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'', include('learning_logs.urls', namespace='learning_logs')),
]
第二条那个include是引入了learning_logs.urls中的urls,并且利用名字空间保证不会冲突。
那么接下来我们就可以定义属于learning_logs的urls了。
再一次强调这两个的不一样:
learning_log是项目,它下面有很多应用程序,所以包含了所有应用程序的urls。每一个应用程序有自己的urls。
在learning_logs中创建文件urls:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
这里面那个函数中的views.index是视图函数名字,后边是这个映射的名字。
前面是正则表达式,当正则表达式满足的话,跳到后边的视图函数中。
每次需要提供到这个主页的链接时,都用这个映射的名字。
视图函数接受请求中的信息,准备好生成网页用的数据。
learning_logs中有views:
from django.shortcuts import render
# Create your views here.
现在只引入了render函数。它提供模板响应。
你这样写:
from django.shortcuts import render
def index(request):
return render(request, 'learning_logs/index.html')
render函数接受两个参数:一个是请求,后边是用于生成网页的模板。
在learning_logs中创建一个文件夹,名字为templates,之后在templates中创建一个文件夹,名字为learning _logs.
(我也不知道为什么但是人家的确就是这样要求的)。
index.html中:
<p>Learning Logp>
<p>Learning Log helps you keep track of your learning, for any topic you're
learning about.
p>
现在输入http://127.0.0.1:8000/ 跳转到自己的index页面了。
为什么呢?
因为你定义了
url(r'^$', views.index, name='index'),
的路由,里面的正则'^$'
,^是匹配开头,$是匹配结尾。^$
就是啥都没有,于是你在输入基本地址之后跳转到的是views.index这个路由,这个路由返回的是'learning_logs/index.html'
index.html模板。
ps:蜗牛就先写到这儿了,这种隔靴搔痒的编程蜗牛实在受不了啦!
也许是蜗牛道行太低感受不到框架的好处,但是知其然不知其所以然的感觉不好受啊……