Django“学习笔记”(Learning Log)的项目-1

1创建虚拟环境

2激活虚拟环境

3pip install Django

4用Django创建项目:

在依然处于活动的虚拟环境的情况下(ll_env包含在括号内),执行如下命令来新建一个项目

django-admin.py startproject learning_log .    

5创建数据库

python manage.py migrate

查看项目

python manage.py runserver


6创建应用程序

重新打开一个终端,进入manage.py 所在目录,激活虚拟环境,再执行

python manage.py startapp learning_logs

learning_logs是文件名,创建的最重要的是models.py、admin.py和views.py


我们将使用models.py来定义我们要在应用程序中管理的数据

7定义模型

模型告诉Django如何处理应用程序中存储的数据。

class Topic(models.Model):

"""用户学习的主题"""

    text = models.CharField(max_length=200)

    date_added = models.DateTimeField(auto_now_add=True)

    def __Str__(self):

    """返回模型的字符串表示"""

          return self.text

上面的一段代码有错误,__str__(self)才是正确的,如果是__Str__()那么主题名称就显示不了。

我们创建了一个名为Topic的类,它继承了Model——Django中一个定义了模型基本功能的

类。Topic类只有两个属性:text和date_added。

属性text是一个CharField——由字符或文本组成的数据

属性date_added是一个DateTimeField——记录日期和时间的数据

8激活模型

要使用模型,必须让Django将应用程序包含到项目中。

1打开settings.py

2找到INSTALLED APPS

3添加自己建立的程序

接下来,需要让Django修改数据库,使其能够存储与模型Topic相关的信息。

python manage.py makemigrations learning_logs

命令makemigrations让Django确定该如何修改数据库使其能够存储与我们定义的新模型相

关联的数据。

下面来应用这种迁移,让Django替我们修改数据库

python manage.py migrate

在这里,Django确认为learning_logs应用迁移时一切正常

9Django管理网站

网站的管理员可使用管理网站,但普通用户不能使用。在本节中,我们将建立管理网站,并通过它

使用模型Topic来添加一些主题。

1. 创建超级用户

python manage.py createsuperuser


用户名和邮件地址可以为,随便写。密码要写两次

2.向管理网站注册模型

我们创建应用程序learning_logs时,Django在models.py所在的目录中创建了一个名为

admin.py的文件

为向管理网站注册Topic,请输入下面的代码,在admin.py 中        

from learning_logs.models import Topic

admin.site.register(Topic)

如果你在浏览器中看到一条消息,指出访问的网页不可用,请确认你在终端窗口中运行

着Django服务器。如果没有,请激活虚拟环境,并执行命令python manage.py runserver。

3. 添加主题


10定义模型Entry

models.py


属性topic是一个ForeignKey实例,外键是一个数据库术语,它引用了数据库中的另一条记录


属性text,它是一个TextField实例(见)。这种字段不需要长度限制,因为我们不想限制条目的长度。属性date_added让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳。

Meta存储用于管理模型的额外信息


迁移模型 Entry


  会遇到问题

TypeError: __init__() missing 1 required positional argument: 'on_delete'


解决之后的代码


你将慢慢地对这个过程了如指掌:

修 改models.py,执行命令python manage.py makemigrations app_name,再执行命令python

manage.py migrate。


向管理网站注册 Entry

在admin.py

from learning_logs.models import Topic, Entry

admin.site.register(Entry)

11Django shell

输入一些数据后,就可通过交互式终端会话以编程方式查看这些数据了

这种交互式环境称为Django shell,是测试项目和排除其故障的理想之地.

开启python解释器:python manage.py shell

探索存储在项目数据库中的数据

from learning_logs.models import Topic

Topic.objects.all()

查询集(queryset)

# 因为这之前我写的代码是__Str__,所以topic对应的没有改变,接下来是改变的


获取id和主题名称

from learning_logs.models import Topic,Entry

topic = Topic.objects.all()

for topic in topics:

        print(topic.id,topic)

得到id,获取属性值

from learning_......

t = Topic.object.get(id=number)

t.属性

每次修改模型后,你都需要重启shell,这样才能看到修改的效果。要退出shell会话,可按Ctr + D;如果你使用的是Windows系统,应按Ctr + Z,再按回车键。


~~~~~~~~~~~~~~~~~~~~不是正文~~~~~~~~~~~~~~~~~~~~~~

在已经定义好的类里面,改动一些代码并不用执行python manage.py makemigrations learning_logs

改动了


改动了str里的内容。如果文本长度大于50。输出原文,如果不是,就输出一个长度。


终端:python manage.py shell

from learning_logs.models import Topic

t=Topic.objects.get(id=1)

t.entry_set.all()

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

12创建网页:学习笔记主页

定义URL、编写视图和编写模板

第一阶段

定义URL

你必须定义URL模式。URL模式描述了URL是如何设计的,让Django知道如何将浏览器请求与网站URL匹配,以确定返回哪个网页。 

每个URL都被映射到特定的视图——视图函数获取并处理网页所需的数据。视图函数通常调

用一个模板,后者生成浏览器能够理解的网页。为明白其中的工作原理,我们来创建学习笔记的

主页。我们将定义该主页的URL、编写其视图函数并创建一个简单的模板。

鉴于我们只是要确保“学习笔记”按要求的那样工作,我们将暂时让这个网页尽可能简单。Web应用程序能够正常运行后,设置样式可使其更有趣,但中看不中用的应用程序毫无意义。就目前而言,主页只显示标题和简单的描述。

1.映射 URL

当前,基础 URL(http://localhost:8000/)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到“学习笔记”的主页。

urls.py


from django.conf.urls import include,url

from django.contrib import admin


# 视图函数 views.index自己编写。

2.编写视图

learning_logs中的文件views.py是你执行命令python manage.py startapp时自动生成的,当前其内容如下

from django.shortcuts import render

函数render(),它根据视图提供的数据渲染响应

def index(request):

"""学习笔记主页"""

    return render(request,'learning_logs/index.html')

3编写模版

模板定义了网页的结构。模板指定了网页是什么样的,而每当网页被请求时,Django将填入

相关的数据。写html文件。

<p>Learning Log

<p>Learning Log helps you keep track of your learning, for any topic you're

learning about.</p>

标签<p></p>标识段落;标签<p>指出了段落的开头位置,而标签</p>指出了段落的结束位置。这里定义了两个段落:第一个充当标题,第二个阐述了用户可使用“学习笔记”来做什么。


~~~~~~~~~~~~~~~~~~~~~~不是正文~~~~~~~~~~~~~~~~~~~~

问题来了

现在,如果你请求这个项目的基础URL——http://localhost:8000/,将看到刚才创建的网页,

而不是默认的Django网页。

但是出现错误了

Django Deprecation Warning or ImproperlyConfigured error - Passing a 3-tuple to django.conf.urls.include() is not supportedAsk Question

这里的问题

原来的代码是

urlpatterns = [

    url(r'^admin/',includ(admin.site.urls)),

    url(r'', include('learning_logs.urls',namespace='learning_logs')),

]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

13创建其他网页

1模版继承


13创建其他网页

1模版继承

base.html

<a href="{% url 'learning_logs:index' %}">Learning Log

{% block content %}{% endblock content %}

这个文件的第一部分创建一个包含项目名的段落,该段落也是一个到主页的链接。

模板标签{% url 'learning_logs:index' %},生成一个url,该URL与learning_logs/urls.py中定义的名为index的URL模式匹配。

总结

1制定项目规范

2虚拟环境中安装Django,创建项目

3创建应用程序

4定义表示应用程序数据鹅模型。

5数据库,修改模型之后django迁移数据库

6创建超级用户

7输入初始数据

8定义url

9创建视图函数

10编写为网站创建网页的模版

11模版继承

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容