在 Django 应用中显示州、县和城市

3
我希望有人能指点我方向,因为我没有正式的编程经验,也不是真正的开发人员。我有一个django网站,它是个人和企业目录。网站是由其他开发人员创建的,现在我正在管理,但我真的不知道自己在做什么,只能边学边做。我一直在阅读所有我能找到的内容,在这个过程中学到了很多,但卡住了。
我想创建一个页面,列出所有美国州,当用户点击州名时,他们将被引导到一个页面,显示该州所有城市和县(当他们点击城市或县时,他们将看到一个模板页面,其中大部分内容是静态的,但用适当的信息替换本地数据,如城市或县名)。
我原本打算使用geodjango或django cities,但它们都太复杂了(我并不是非常有经验,这是一个低估 :)。
我现在正在创建一个csv文件,包含我想要的信息(州/县/城市/邮政编码),计划将其导入到数据库中,然后使用模型/视图/模板来显示数据。

我考虑使用这个API http://www.sba.gov/about-sba-services/7617/,而不是将数据导入我的数据库。

我的问题如下:

如何实现具有关系的州、县、城市和邮政编码页面,以便城市和邮政编码与县和州相关联?

如何使用http://www.sba.gov/about-sba-services/7617/ API来完成上述操作,是否仍需要将数据导入数据库并创建模型/视图/模板?

我知道这些是基本问题,我知道我应该上一些课程来学习它,但想着也许我会得到一个可行的答案。请记住,我经验非常有限,详细解释答案会很有帮助。提前感谢您。

1个回答

2
我建立了一个地理定位应用程序,并发现geodjango和django-cities对于我所需的功能过于复杂。因此,我使用了http://www.geonames.org/并导入了他们的数据库。如果您设置了相应的模型,您可以像查询常规数据库一样查询它。Django-cities也是这样做的,但我从未让它正常工作过,而且它会导入所有内容。如果您只需要导入美国州和城市,那么您可以手动省略其余部分或在导入所有内容后使用django删除它们。然后将您的数据库制作成Django fixture,以便每次重新导入时仅使用您的数据。
我发现他们也有特定国家的数据库备份,所以你很幸运。只需下载美国的备份并进行设置。http://download.geonames.org/export/dump/US.zip(其中包含带有附加数据的城市)- 如果想节省空间,则不要导入不需要的内容。 同时还需要使用带有ID的管理表格,城市数据库将引用该ID来表示州 - http://download.geonames.org/export/dump/admin1CodesASCII.txt (稍后,如果您需要减少查询次数,可以合并这些表格,使城市已经具有州的信息)。
如果您需要其他帮助,请随时提问。使用这些数据库非常容易。最初唯一让人困惑的是管理代码和城市名称之间的链接。
只需按照相同的方式建立Django数据库表格,因此甚至可以使用Django自己的ORM。

谢谢您的回答,非常有帮助。我已经创建了一个包含州和城市的CSV文件,以及另一个包含州和县的CSV文件,如下所示:城市 州名 纬度 经度 AIBONITO PR 18.14 -66.26 ANASCO PR 18.28 -67.14 ANGELES PR 18.28 -66.79 ARECIBO PR 18.45 -66.73县 01003 Baldwin County AL 01005 Barbour County AL 01007 Bibb County AL 01009 Blount County AL 01011 Bullock County AL 01013 Butler County AL 01015 Calhoun County AL 01017 Chambers County AL 01019 Cherokee County AL - user1193744
简单回顾一下,我会开始一个新的Django应用程序,并创建模型以显示州的类别,其中将有子县、城市和邮政编码。再创建另一个州县的类别,其子类别为县。然后使用视图来定义数据并使用HTML模板来显示数据?听起来没错,我对这方面没有什么经验,所以我只是想确认一下。 - user1193744
任何带有详细说明的示例代码都会非常有帮助。另外,您是否对使用Django进行RESTful API开发有经验?如果我使用http://www.sba.gov/about-sba-services/7617/这个API,这是另一种可行的方法吗?我只需要州/县/城市/邮编信息 - 再次感谢。 - user1193744
我目前遇到的主要问题是如何导入数据。 - user1193744
我已经创建了一个包含数据的 CSV 文件,非常简单 - 只要列出全名、州缩写、县名和城市/邮编即可。不知道如何将数据导入我的项目中。我知道一些如何使用 Python 解释器,但不确定该怎么做,在阅读 Django 书籍以寻找解决方案。 - user1193744
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接