Python中Django运行后无法访问的问题如何解决?

我直接把代码移进的 view,然后用的一个函数调用这个类 class TrainsCollection: header = '车次 车站 时间 历时 一等 二等 软卧 硬卧 硬座 无座'.split()

def __init__(self, available_trains, options):
    """
    :param available_trains: 官网提取到的 json 数据列表
    :param options: 查询的选项, 如高铁, 动车, etc...
    """
    self.available_trains = available_trains
    self.options = options
"""切割"""
def _cut_train(self):
    saperated_info = []
    for i in range(len(self.available_trains)):
        saperated_info.append((self.available_trains[i]).split('|'))
    """构建字典列表"""
    dict_header = ['train_number', 'from_station', 'to_station', 'from_time', 'to_time', 'spend_time',
    'first_class', 'second_class', 'soft_sleeper', 'hard_sleeper', 'hard_seat', 'none_seat']
    refer_to_num = [3, 4, 5, 8, 9, 10, 31, 30, 23, 26, 28, 29]
    train_list = []
    train_dict = {}
    for times in range(len(saperated_info)):
        for key in range(len(dict_header)):
            if saperated_info[times][refer_to_num[key]]:
                train_dict[dict_header[key]] = saperated_info[times][refer_to_num[key]]
            else:
                train_dict[dict_header[key]] = '--'
        train_list.append(copy.deepcopy(train_dict))
    return train_list

@property def trains(self): for raw_train in self._cut_train(): train_no = raw_train[‘train_number’] initial = train_no[0].lower() if not self.options or initial in self.options: train = [ train_no, ‘\n’.join([Fore.GREEN + _get_keys(raw_train[‘from_station’]) + Fore.RESET, Fore.RED + _get_keys(raw_train[‘to_station’]) + Fore.RESET]), ‘\n’.join([Fore.GREEN + raw_train[‘from_time’] + Fore.RESET, Fore.RED + raw_train[‘to_time’] + Fore.RESET]), raw_train[‘spend_time’], raw_train[‘first_class’], raw_train[‘second_class’], raw_train[‘soft_sleeper’], raw_train[‘hard_sleeper’], raw_train[‘hard_seat’], raw_train[‘none_seat’], ] yield train

def _get_keys(station_eg): for key in stations: if stations[key] == station_eg: def pretty_print(self): pt = PrettyTable() pt._set_field_names(self.header) for train in self.trains: pt.add_row(train) content = PrettyTable.whatever() return HttpResponse(’<pre>{}</pre>’.format(content))

错误提示: def pretty_print(self): ^ IndentationError: expected an indented block


Python中Django运行后无法访问的问题如何解决?

12 回复

错误提示很明白了,再认真看一下吧


先检查Django服务器是否正常启动。在终端运行 python manage.py runserver 后,应该看到类似 “Starting development server at http://127.0.0.1:8000/” 的输出。如果没看到错误信息但无法访问,试试这几个步骤:

  1. 检查IP和端口:默认只绑定127.0.0.1,其他机器无法访问。用 python manage.py runserver 0.0.0.0:8000 让所有IP都能访问。

  2. 查看防火墙:确保8000端口在防火墙中是开放的。

  3. 检查ALLOWED_HOSTS:在settings.py里,如果是测试环境可以暂时设为 ALLOWED_HOSTS = ['*'],生产环境千万别这么设。

  4. 看控制台输出:访问时终端会显示请求日志,如果连日志都没有,说明请求根本没到Django。

  5. 换个端口试试:有时候端口被占用,用 python manage.py runserver 8080 换一个。

如果还不行,贴一下你的启动命令和访问时的具体现象。

总结:先确认服务是否启动,再检查网络和配置。

错误提示写明白了……你需要一个 IDE

但是我这个缩进不是正常的吗

python<br> for key in stations:<br> if stations[key] == station_eg:<br> pass<br>def pretty_print(self):<br> pt = PrettyTable()<br>

if stations[key] == station_eg:

错误提示很明显啊

def _get_keys(station_eg):
for key in stations:
if stations[key] == station_eg:
def pretty_print(self):
上面列出的代码,倒数第二行是个冒号,解释器会认为下一行应该是 If 条件成立的时候要执行的语句。

表示同情,肯定是排错排了两个小时然后没辙了才贴上来。。。

你需要 pycharm…

或者 yapf

需要游标卡尺测量一下缩进

我觉得他需要小黄鸭!

回到顶部