学习书 Python 从入门到实践 18.3.1 映射 URL 出错,弄了两晚上,实在没解了,来问下大佬们 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shonky
V2EX    Django

学习书 Python 从入门到实践 18.3.1 映射 URL 出错,弄了两晚上,实在没解了,来问下大佬们

  •  
  •   shony 2018-09-04 22:03:45 +08:00 4070 次点击
    这是一个创建于 2668 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://i.loli.net/2018/09/04/5b8e904239492.png 如图所示,Django 是 2.1.1 的,python3.7 请教下大佬啊,文档也看了,谷歌也谷歌到相应问题,照着改了就是没用啊。

    27 条回复    2018-09-05 21:41:14 +08:00
    princelai
        1
    princelai  
       2018-09-04 22:15:36 +08:00 via Android
    django-admin startapp xxxx,你是这么添加 Django app 的呢
    shonky
        2
    shonky  
    OP
       2018-09-04 22:19:27 +08:00
    @princelai 不是这么 python manage.py startapp learning_logs 创建的么?
    Sanko
        3
    Sanko  
       2018-09-04 22:23:39 +08:00 via Android   1
    提示说的很明白了,你没写 app_name 啊
    xpresslink
        4
    xpresslink  
       2018-09-04 22:27:54 +08:00   1
    解决方法
    在 project\learning_notes\urls.py
    开头加上一句
    app_name = 'learning_notes'
    shonky
        5
    shonky  
    OP
       2018-09-04 22:28:06 +08:00
    @Sanko 谢谢,网页是可以打开了,可显示 404,
    shonky
        6
    shonky  
    OP
       2018-09-04 22:29:59 +08:00
    @xpresslink 谢谢了,确实是可以,没报错了,又出现个问题为啥不能正常显示 index.html.
    xpresslink
        7
    xpresslink  
       2018-09-04 22:35:48 +08:00   1
    @shonky
    加了 namespace 后
    反解析 url 时都要使用 {% url 'learning_notes: method_name ‘ %} 模式。
    shonky
        8
    shonky  
    OP
       2018-09-04 22:46:04 +08:00
    @xpresslink 这个东西加在<head ></head>中么
    Sanko
        9
    Sanko  
       2018-09-04 22:54:19 +08:00 via Android   1
    显示 404 ?你可以把你的 urls 和 views 贴上来,根据你目前提供的信息无法判断
    xpresslink
        10
    xpresslink  
       2018-09-04 22:55:07 +08:00   1
    @shonky
    settings.py 中 打开调试模式

    DEBUG=True

    把报错详细信息贴上来
    shonky
        11
    shonky  
    OP
       2018-09-04 22:55:57 +08:00
    @Sanko Not Found
    The requested URL / was not found on this server.
    shonky
        12
    shonky  
    OP
       2018-09-04 22:57:00 +08:00
    @xpresslink 这个解决了,404 不见了。出现了这个 Not Found
    The requested URL / was not found on this server.。
    我不太知道创建了一个简单的 index.html,这个反解析要放在那里。
    shonky
        13
    shonky  
    OP
       2018-09-04 23:03:09 +08:00
    @xpresslink 这错误好像和反解析没关系吧,因为并没有用到 URL
    Sanko
        14
    Sanko  
       2018-09-04 23:05:08 +08:00 via Android
    你现在是首页要显示一个已经写好的 html 文件是吗?你可以去搜下 render 函数
    shonky
        15
    shonky  
    OP
       2018-09-04 23:07:24 +08:00 via Android
    @Sanko 好的,我是按那书上做的。也许是因为版本不同,有些东西用的不太一样。我明天在看看文档。看是不是 render 用法变了。
    RBQMT
        16
    RBQMT  
       2018-09-05 09:24:00 +08:00
    url.py 里 path 后面不用写正则,path('admin/', admin.site.urls),这样写就行
    RBQMT
        17
    RBQMT  
       2018-09-05 09:24:37 +08:00
    path('about_us/',views.about_us, name='about_us'),上面例子不太好,这样
    xpresslink
        18
    xpresslink  
       2018-09-05 11:43:14 +08:00
    @shonky
    最省事的办法


    然后在 urlpatterns 中最上面加一行
    path('', TemplateView.as_view(template_name="index.html"), name="index"),
    xpresslink
        19
    xpresslink  
       2018-09-05 11:43:46 +08:00
    在 learning_notes 下的 urls 开头加一行
    from django.views.generic import TemplateView
    PulpFunction
        20
    PulpFunction  
       2018-09-05 11:55:14 +08:00
    上 git 看看 demo 啥的
    shonky
        21
    shonky  
    OP
       2018-09-05 12:31:24 +08:00 via Android
    @RBQMT 是 2.11 版本 path 可以不用像 url 那样写正则么。看文档说 path 比 url 能更好弄路由。
    shonky
        22
    shonky  
    OP
       2018-09-05 12:34:05 +08:00 via Android
    @PulpFunction 看 demo 样例是叫我去看看别人优秀的源码么。还是怎么个意思 。
    shonky
        23
    shonky  
    OP
       2018-09-05 12:34:41 +08:00 via Android
    @xpresslink 好的,晚上回去试试。谢谢大佬抽空解答。
    metamask
        24
    metamask  
       2018-09-05 14:51:24 +08:00
    app_name = getattr(urlconf_module, 'app_name', app_name)
    if namespace and not app_name:
    raise ImproperlyConfigured(
    'Specifying a namespace in include() without providing an app_name '
    'is not supported. Set the app_name attribute in the included '
    'module, or pass a 2-tuple containing the list of patterns and '
    'app_name instead.',
    )


    @shonky
    你点进去 include 可以看到这个;

    你设置 namespace 相对应在 include 的 urls 也需要设置 app_name ;


    url reverse 的时候也必须加上去:
    如"namespace:route" 或者 "app_name:route";

    相同的情况下,默认优先匹配第一个;
    shonky
        25
    shonky  
    OP
       2018-09-05 18:19:18 +08:00 via Android
    @freakxx 感谢大佬帮助。
    shonky
        26
    shonky  
    OP
       2018-09-05 19:35:59 +08:00
    @xpresslink 大佬,按你的改了。网页报错 Server Error (500)
    xpresslink
        27
    xpresslink  
       2018-09-05 21:41:14 +08:00
    @shonky

    在 settings py 中 打开调试模式

    DEBUG=True

    把报错详细信息贴上来
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2049 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:12 PVG 00:12 LAX 08:12 JFK 11:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86