只为 发表于 2017-10-20 09:44:31

python django url

本帖最后由 只为 于 2017-10-20 11:09 编辑

views.py

# coding:utf-8
from django.http import Http404, HttpResponse


def home(request):
    print(dir(request))# 查看request的方法有哪些
    print(type(request))
    # <class 'django.core.handlers.wsgi.WSGIRequest'>
    return HttpResponse('Welcome to My Home Page')


def hello(request):
    return HttpResponse('<h1>Hello World!</h1>')

import datetime
def hours_ahead(request, offset):
    try:
      offset = int(offset)
    except ValueError:
      raise Http404()
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
    return HttpResponse(html)


访问报错:


url.py 文件:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from views import hello, hours_ahead

urlpatterns = patterns('',

    url(r'^hello$', hello),
    url(r'^time/plus/(\d{1, 2})/$', hours_ahead),
    url(r'^$', 'd11.views.home', name='home'),
    url(r'^admin/', include(admin.site.urls)),
)

gopythoner 发表于 2017-10-20 10:44:37

django的端口不是8000?

只为 发表于 2017-10-20 10:54:55

gopythoner 发表于 2017-10-20 10:44
django的端口不是8000?

启动服务的时候可以指定端口,我启动服务的命令是python manage.py runserver 8080,所以我用8080端口访问的,默认端口不知道是多少,还有我的django是不能指定80端口启动服务的

gopythoner 发表于 2017-10-20 11:02:54

url(r'^time/plus/(\d{1, 2})/
, hours_ahead),

这个是什么意思,r'’,你只有前引号,没有后引号?

这个报错是说匹配不到你设置的url,一般这种都是正则有问题,反正我看你的url里面全部都没有后引号,不知道是你复制过来有问题还是怎么的,自己好好看看官网教程怎么写的正则,对比你自己写的

只为 发表于 2017-10-20 11:07:59

gopythoner 发表于 2017-10-20 11:02
url(r'^time/plus/(\d{1, 2})/
, hours_ahead),



我刚看了下,是贴出来的代码有问题,实际我的是 url(r'^time/plus/(\d{1,2})/$', hours_ahead).
我再看看官网的教程,谢谢了

gopythoner 发表于 2017-10-20 11:08:42

本帖最后由 gopythoner 于 2017-10-20 11:09 编辑

urlpatterns = [
    url(r'^,IndexView.as_view(),name='index'),
    url(r'^timeline/,TimelineView.as_view(),name='timeline'),
    url(r'^article/(?P<article_id>\d+)/,DetailView.as_view(),name='detail'),
    url(r'^category/(?P<slug>+)/,CategoryView.as_view(),name='category'),
    url(r'^tag/(?P<slug>+)/,TagView.as_view(),name='tag'),
    url(r'^search/?, MySearchView.as_view(), name='search_view'),
    url(r'^about/,Aboutview,name='about'),
]

gopythoner 发表于 2017-10-20 11:12:03

妈的,我贴出来的也有问题

你看你的问题是不是在这里,urlpatterns = []


只为 发表于 2017-10-20 11:12:53

gopythoner 发表于 2017-10-20 11:08


我的django 是1.7.7 的版本的,代码放上去显示有问题,我把url的配置改成文本形式了,您看看还有问题吗

gopythoner 发表于 2017-10-20 11:15:59

这版本也太低了吧,至少要1.8啊,好像是1.8之后是一个大改动吧
难怪url的设置不同,那我就没法给你看了,我用的1.10的版本
反正你这个报错就是在说你的url匹配不到,问题就是处在了url设置里面

gopythoner 发表于 2017-10-20 11:20:19

正则的问题吧
\d{0,2}
我用正则比较少

只为 发表于 2017-10-20 11:21:04

gopythoner 发表于 2017-10-20 11:12
妈的,我贴出来的也有问题

你看你的问题是不是在这里,urlpatterns = []

urlpatterns = patterns('',

    url(r'^hello$', hello),
    url(r'^time/plus/(\d{1, 2})/$', hours_ahead),
    url(r'^$', 'd11.views.home', name='home'),
    url(r'^admin/', include(admin.site.urls)),
)

这是我的url配置

gopythoner 发表于 2017-10-20 11:24:42

不是正则问题,{1,2}没有错
看看是你输入的网址后面少了一个/么
反正正则里面是要求/结尾的

只为 发表于 2017-10-20 11:25:59

gopythoner 发表于 2017-10-20 11:24
不是正则问题,{1,2}没有错
看看是你输入的网址后面少了一个/么
反正正则里面是要求/结尾的

加上/这个也试了,不行

gopythoner 发表于 2017-10-20 11:28:43

只为 发表于 2017-10-20 11:25
加上/这个也试了,不行

你直接运行127.0.0.1:8080的时候能看到it work 的提示么?
如果这个都不能,那说明你这个项目就没有运行成功

ooxx7788 发表于 2017-10-20 11:49:24

本帖最后由 ooxx7788 于 2017-10-20 11:50 编辑

url(r'^time/plus/(\d{1, 2})/

这一句里面应该是(?P<offset>\d{1, 2}),就把这句改成这样。表示这一段正则是做为offset参数传入views的,否则你这个就少一个参数吧。
url(r'^time/plus/(?P<offset>\d{1, 2})/, hours_ahead),

只为 发表于 2017-10-20 12:19:18

gopythoner 发表于 2017-10-20 11:28
你直接运行127.0.0.1:8080的时候能看到it work 的提示么?
如果这个都不能,那说明你这个项目就没有运行 ...

可以看到的,/home或者/hello的都可以访问的

只为 发表于 2017-10-20 13:51:55

ooxx7788 发表于 2017-10-20 11:49
这一句里面应该是(?P\d{1, 2}),就把这句改成这样。表示这一段正则是做为offset参数传入views的,否则 ...

我按你说的加上一个参数还是不行啊,还是404

不自律的笨鸟 发表于 2021-5-15 07:33:53

看来还有很多东西要学习啊!
页: [1]
查看完整版本: python django url