V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shonky
V2EX  ›  Django

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

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

    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 好的,晚上回去试试。谢谢大佬抽空解答。
    freakxx
        24
    freakxx  
       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   ·   实用小工具   ·   5420 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:21 · PVG 17:21 · LAX 01:21 · JFK 04:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.