Python学习之路日志—Web应用程序(2)

在这篇博客中,我将继续利用Django开发Web应用程序:

1.2.3 用Django管理网站:

为应用程序定义模型时,Django提供的管理网站(admin site)让你能够轻松地处理模型。网站的管理员可使用管理网站,但普通用户不能使用。在本节中,我们将建立管理网站, 并通过它使用模型Topic 来添加一些主题。

Django允许你创建具备所有权限的用户——超级用户。权限决定了用户可执行的操作。最严格的权限设置只允许用户阅读网站的公开信息;注册了的用户通常可阅读自己的私有数据,还可查看一些只有会员才能查看的信息。为有效地管理Web应用程序,网站所有者通常需要访问网站存储的所有信息。优秀的管理员会小心对待用户的敏感信息,因为用户对其访问的应用程序有极大的信任。 为在Django中创建超级用户,请执行下面的命令并按提示做:

python manage.py createsuperuser

在这里插入图片描述

Django自动在管理网站中添加了一些模型,如UserGroup ,但对于我们创建的模型,必须手工进行注册。 我们创建应用程序learning_logs 时,Django在models.py所在的目录中创建了一个名为admin.py的文件:

在这里插入图片描述

为向管理网站注册Topic ,要输入下面的代码:

在这里插入图片描述

from django.contrib import admin

from learning_logs.models import Topic

admin.site.register(Topic)

这些代码导入我们要注册的模型Topic (见第3行),再使用admin.site.register() (见第5行)让Django通过管理网站管理我们的模型。 现在,使用超级用户账户访问管理网站:访问http://localhost:8000/admin/ ,并输入你刚创建的超级用户的用户名和密码,你将看到类似于下图所示的屏幕。这个网页让你能够添加和修改用户和用户组,还可以管理与刚才定义的模型Topic 相关的数据:

在这里插入图片描述

向管理网站注册Topic 后,我们来添加第一个主题。为此,单击Topics进入主题网页,它几乎是空的,这是因为我们还没有添加任何主题。单击Add,将看到一个用于添加新主题的表单。在第一个方框中输入Chess ,再单击Save,这将返回到主题管理页面,其中包含刚创建的主题。 下面再创建一个主题,以便有更多的数据可供使用。再次单击Add,并创建另一个主题Rock Climbing 。当单击Save时,将重新回到主题管理页面,其中包含主题Chess和 Rock Climbing,如下图所示:

在这里插入图片描述

1.2.4 定义模型Entry:

要记录学到的国际象棋和攀岩知识,需要为用户可在学习笔记中添加的条目定义模型。每个条目都与特定主题相关联,这种关系被称为多对一关系,即多个条目可关联到同一个主题。 下面是模型Entry 的代码:

在这里插入图片描述

from django.db import models

class Topic(models.Model):
	'''the user learning topic'''
	text = models.CharField(max_length = 200)
	date_added = models.DateTimeField(auto_now_add=True)

	def __str__(self):
		'''Returns a string representation of the model'''
		return self.text

class Entry(models.Model):
	'''Specific knowledge learned about a subject'''
	topic = models.ForeignKey(Topic)
	text = models.TextField()
	date_added = models.DateTimeField(auto_now_add=True)

	class Meta:
		verbose_name_plural = 'entries'

	def __str__(self):
		'''Returns a string representation of the model'''

		return self.text[:50] + '....'

Topic 一样,Entry 也继承了Django基类Model (见第12行)。第一个属性topic 是一个ForeignKey 实例(见第14行)。外键是一个数据库术语,它引用了数据库中的另一条记 录;这些代码将每个条目关联到特定的主题。每个主题创建时,都给它分配了一个键(或ID)。需要在两项数据之间建立联系时,Django使用与每项信息相关联的键。稍后我们将根据这些联系获取与特定主题相关联的所有条目。 接下来是属性text ,它是一个TextField 实例(见第15行)。这种字段不需要长度限制,因为我们不想限制条目的长度。属性date_added 让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳。 在第18行处,我们在Entry 类中嵌套了Meta 类。Meta 存储用于管理模型的额外信息,在这里,它让我们能够设置一个特殊属性,让Django在需要时使用Entries 来表示多个条目。如果没有这个类, Django将使用Entrys来表示多个条目。最后,方法__str__() 告诉Django,呈现条目时应显示哪些信息。由于条目包含的文本可能很长,我们让Django只显示text 的前50个字符(见第24行)。我们还添加了一个省略号,指出显示的并非整个条目。由于我们添加了一个新模型,因此需要再次迁移数据库。

然而,我在迁移时却出现了如下问题:

在这里插入图片描述

上网搜索后,我找到了原因:在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

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

于是需要将上述代码的第14行改成:

topic = models.ForeignKey(Topic , on_delete=models.CASCADE)

接着执行命令 ,发现Django应用了这种迁移且一切顺利:

在这里插入图片描述

1.2.5 向管理网站注册Entry:

我们还需要注册模型Entry 。为此,需要将admin.py修改成类似于下面这样:

在这里插入图片描述

from django.contrib import admin

from learning_logs.models import Topic, Entry

admin.site.register(Topic)
admin.site.register(Entry)

返回到http://localhost/admin/ ,将看到learning_logs下列出了Entries。单击Entries的Add链接,或者单击Entries再选择Add entry。将看到一个下拉列表,能够选择要为哪个主题创建条目,还有一个用于输入条目的文本框:

( 如果在浏览器中看到一条消息,指出访问的网页不可用,请确认在终端窗口中运行着Django服务器。如果没有,请激活虚拟环境,并执行命令python manage.py runserver )

在这里插入图片描述

当单击Save时,将返回到主条目管理页面。在这里,将发现使用text[:50] 作为条目的字符串表示的好处:管理界面中,只显示了条目的开头部分而不是其所有文本,这使得管理多个条目容易得多:

在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Web上启动Python程序,您需要使用Web框架和服务器来将Python代码与Web应用程序集成在一起。 以下是一些常用的Web框架和服务器: Web框架: - Flask: 一个轻量级的Web框架,适用于小型项目和API。 - Django: 一个全功能的Web框架,适用于大型项目和Web应用程序。 - Bottle: 一个微型Web框架,适用于小型项目和API。 服务器: - Apache:一个流行的Web服务器,支持许多编程语言,包括Python。 - Nginx:一个高性能的Web服务器,也支持Python。 - Gunicorn:一个Python WSGI HTTP服务器,可用于运行Python Web应用程序。 以下是一些启动Python程序的步骤: 1. 安装所需的Web框架和服务器。您可以使用pip安装Flask、Django、Bottle和Gunicorn。Apache和Nginx通常已预安装在许多操作系统中。 2. 编写Python代码,并将其保存到.py文件中。 3. 使用Web框架将Python代码集成到Web应用程序中。具体实现方式根据不同的Web框架而异。通常需要编写路由、控制器和模板等组件。 4. 启动Web服务器,并将Web应用程序部署到服务器上。具体实现方式也根据不同的服务器而异。例如,使用Apache时,您可以将Web应用程序部署到Apache的文档根目录中,然后在浏览器中访问该应用程序的URL即可。 例如,使用Flask框架和Gunicorn服务器,您可以按照以下步骤启动Python程序: 1. 使用pip安装Flask和Gunicorn: ``` pip install flask gunicorn ``` 2. 编写Python代码,并将其保存到app.py文件中: ``` from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run() ``` 3. 启动Gunicorn服务器: ``` gunicorn app:app ``` 4. 在浏览器中访问http://localhost:8000/即可看到输出“Hello, World!”的页面。 ### 回答2: 要在Web上启动Python程序,可以按照以下步骤进行操作: 1. 选择合适的Web服务器:首先选择与Python兼容的Web服务器,如Apache、Nginx等。确保服务器已正确设置,并且可以运行Python程序。 2. 配置服务器环境:安装必要的软件和库,如Python解释器、WSGI(Web服务器网关接口)等。 3. 编写Python程序:编写Python程序,使用框架(如Django、Flask)或自定义开发的方式。确保程序可以在本地环境中运行良好。 4. 配置Web服务器:根据所选服务器的配置文档,设置服务器以将请求转发到Python程序。这通常涉及创建虚拟主机、配置端口号、路径映射等。 5. 测试程序:在Web服务器上启动Python程序之前,进行必要的测试,以确保程序在Web环境中可以正常运行。测试包括调试代码、检查日志信息等。 6. 启动程序:在Web服务器上启动Python程序,将其部署到所选服务器上。这通常涉及将程序文件复制到服务器的特定目录,并确保权限设置正确。 7. 配置域名和网络设置:为Python程序分配一个域名,并设置正确的网络设置,以便Web服务器可以正确地将请求路由到该程序。 8. 监控和维护:定期监控Python程序的运行情况,并根据需要运行维护任务。这包括处理错误、更新代码、优化性能等。 总结起来,要在Web上启动Python程序,需要选择适当的服务器,配置环境,编写和测试程序,配置服务器和网络设置,并监控和维护程序。这些步骤将确保Python程序可以在Web上正常运行。 ### 回答3: 在Web上启动Python程序可以通过以下步骤实现: 1. 选择一个合适的Web服务器:首先,你需要选择一个适合的Web服务器来运行你的Python程序。常用的Web服务器包括Apache、Nginx和IIS等。 2. 配置Web服务器:接下来,你需要配置Web服务器以便它能够识别和处理Python脚本。具体配置方法因服务器而异,你可以查看相关文档或搜索网络寻找适合你的Web服务器的配置方法。 3. 安装Python解释器:确保你的服务器上已安装了Python解释器。你可以从Python官方网站下载并安装适合你操作系统的Python解释器。 4. 编写Python脚本:根据你的需求编写一个Python脚本。这个脚本可以是一个简单的Hello World程序,也可以是处理Web请求和生成动态内容的复杂应用。 5. 将脚本放置在Web服务器的适当位置:将你编写的Python脚本放置在Web服务器上指定的位置。这通常是服务器文件系统中的一个特定目录,比如Apache服务器的htdocs目录。 6. 设置脚本的执行权限:为了确保你的脚本能够在Web服务器上正确运行,你需要为该文件设置执行权限。这可以通过运行命令`chmod +x your_script.py`来实现。 7. 通过Web浏览器访问脚本:最后,通过在Web浏览器的地址栏中输入你的脚本的URL,就可以访问和执行你的Python程序了。 值得注意的是,这个过程可能因为你使用的Web服务器和操作系统而略有不同,但总体步骤是相通的。在实际操作中,你可能还需要处理其他一些细节,比如安全性和性能方面的考量。总之,通过正确地配置Web服务器和编写Python脚本,你就可以在Web上启动Python程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值