标签: django-urls

我如何对django网址进行单元测试?

除了我之外,我在我的应用程序中实现了100%的测试覆盖率urls.py.您对我如何为我的网址编写有意义的单元测试有什么建议吗?

FWIW这个问题出现了,因为我正在尝试测试驱动开发,并希望在编写代码来修复它们之前进行失败的测试.

django tdd unit-testing django-urls

45
推荐指数
1
解决办法
2万
查看次数

Django - 登录后,将用户重定向到他的自定义页面 - > mysite.com/username

默认情况下,登录后django会将用户重定向到帐户/配置文件页面,或者如果您编辑LOGIN_REDIRECT_URL,则可以将用户发送到您在settings.py中指定的另一个页面.

这很棒,但我希望用户(登录后)被重定向到一个自定义页面,该页面的链接看起来像这样:mysite.com/username.因此,默认帐户/配置文件或LOGIN_REDIRECT_URL设置在这种情况下不起作用,因为两者都是静态的.就我而言username,每个用户的地址部分都会发生变化.

当用户登录时,我如何能够做到这一点的任何想法将转到自定义用户页面,该用户页面在地址中具有用户名称,如: mysite.com/username?任何输入都是真正的赞赏.

django django-urls django-views django-settings

42
推荐指数
5
解决办法
9万
查看次数

Django 2.0路径错误?:(2_0.W001)的路由包含'(?P <',以'^'开头,或以'$'结尾

我是Django的新手,正在尝试在我的网站上为音乐应用程序创建后端代码.

我在views.py文件中创建了正确的视图(在正确的目录中),如下所示:

def detail(request, album_id):
    return HttpResponse("<h1>Details for Album ID:" + str(album_id) + "</h1>")
Run Code Online (Sandbox Code Playgroud)

但是,为此创建URL或路径时(如下所示)

#/music/71/ (pk)
path(r'^(?P<album_id>[0-9])/$', views.detail, name='detail'),
Run Code Online (Sandbox Code Playgroud)

我在终端上遇到警告:

?: (2_0.W001) Your URL pattern '^(?P<album_id>[0-9])/$' [name='detail'] has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().
Run Code Online (Sandbox Code Playgroud)

每当/music/(路径工作的)后面跟一个数字,例如/music/1(这是我想做的),就找不到页面,终端给出了上述警告.

这可能是一个简单的错误,只是我是愚蠢但我是Django和python正则表达式语句的新手,所以任何帮助表示赞赏.

python django django-urls django-views python-3.x

42
推荐指数
4
解决办法
2万
查看次数

在Django有类似'rake routes'的东西吗?

在rails中,on可以用rake显示活动路由(http://guides.rubyonrails.org/routing.html):

$ rake routes
          users GET  /users          {:controller=>"users", :action=>"index"}
formatted_users GET  /users.:format  {:controller=>"users", :action=>"index"}
                POST /users          {:controller=>"users", :action=>"create"}
                POST /users.:format  {:controller=>"users", :action=>"create"}
Run Code Online (Sandbox Code Playgroud)

django是否有类似的工具/命令,显示例如URL模式,模式的名称(如果有的话)以及视图中的相关功能?

python django routing ruby-on-rails django-urls

39
推荐指数
2
解决办法
1万
查看次数

django表单为关键字参数获取了多个值

我有一个简单的模型如下:

RATING_CHOICES = zip(range(1, 6), range(1, 6))
class Rating(models.Model):

    value = models.IntegerField(choices=RATING_CHOICES)
    additional_note = models.TextField(null=True, blank=True)
    from_user = models.ForeignKey(User, related_name='from_user')
    to_user = models.ForeignKey(User, related_name='to_user')
    shared_object = models.ForeignKey(ObjectDetail, null=True, blank=True)
    dtobject = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

从上面的模型我生成一个模型表单,在我的forms.py中如下:

class RatingForm(ModelForm):

     class Meta:
          model = Rating
          exclude = ('from_user', 'dtobject',
                     'shared_object')
Run Code Online (Sandbox Code Playgroud)

在我的网址中,我尝试以下方法:

url(r'^rate/(?P<form_type>[\w]+)/(?P<oid>\d+)/(?P<oslug>[\w-]+)/$', 'rating_form', name='rating_form'),                     
Run Code Online (Sandbox Code Playgroud)

在我看来,以下内容:

def rating_form(form_type = None, oid = None, oslug=None):

    print form_type
    form = RatingForm(data=request.POST or None)

    if request.POST and form.is_valid():
           form.save()
        return HttpResponseRedirect("/")
    else:
        return render(request, "share.html", {'form' : form }) …
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-forms django-views

31
推荐指数
1
解决办法
1万
查看次数

在Django网站上找不到404页面?

我正在关注Django网站上的教程来创建一个简单的民意调查应用程序.但是,Django无法解析"//127.0.0.1:8000/polls",即使我在mySite/urls.py中定义了正则表达式.我在virtualenv中这样做,安装了最新的Django(1.7).

MYSITE/urls.py:

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

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)
Run Code Online (Sandbox Code Playgroud)

MYSITE /调查/ urls.py:

from django.conf.urls import patterns, url
from polls import views

urlpatterns = patterns('',
url(r'^$', views.index, name='index'), 
)
Run Code Online (Sandbox Code Playgroud)

MYSITE /调查/ views.py:

from django.shortcuts import render
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
Run Code Online (Sandbox Code Playgroud)

MYSITE/settings.py:

 ...
 INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
 ) 
  ....
 ROOT_URLCONF = 'mySite.urls'
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Using the …
Run Code Online (Sandbox Code Playgroud)

django views django-urls

31
推荐指数
4
解决办法
5万
查看次数

获取'str'对象在Django中没有属性'get'

views.py

def generate_xml(request, number):
    caller_id = 'x-x-x-x'
    resp = twilio.twiml.Response()

    with resp.dial(callerId=caller_id) as r:
         if number and re.search('[\d\(\)\- \+]+$', number):
            r.number(number)
         else:
             r.client('test')
   return str(resp)
Run Code Online (Sandbox Code Playgroud)

url.py

url(r'^voice/(?P<number>\w+)$', 'django_calling.views.generate_xml', name='generating TwiML'),
Run Code Online (Sandbox Code Playgroud)

每当我请求http://127.0.0.1:8000/voice/number?id=98获得以下错误时:

Request Method:     GET
Request URL:    http://127.0.0.1:8000/voice/number?id=90
Django Version:     1.6.2
Exception Type:     AttributeError
Exception Value:    'str' object has no attribute 'get'

Exception Location:     /usr/local/lib/python2.7/dist-     
Run Code Online (Sandbox Code Playgroud)

完全追溯:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/voice/number?id=90

Django Version: 1.6.2
Python Version: 2.7.5
Installed Applications:
 ('django.contrib.admin',
'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_calling',
'django_twilio', …
Run Code Online (Sandbox Code Playgroud)

python django django-urls django-views

30
推荐指数
2
解决办法
4万
查看次数

我的Django网址没有拿起破折号

我试图找出一个匹配domain.com\about-us \&domain.com\home \的网址

我有一个网址正则表达式:

^(?P<page>\w+)/$
Run Code Online (Sandbox Code Playgroud)

但它不会与网址匹配 - 在其中.

我试过了

^(?P<page>\.)/$
^(?P<page>\*)/$
Run Code Online (Sandbox Code Playgroud)

但似乎没什么用.

django django-urls

29
推荐指数
1
解决办法
7524
查看次数

你如何使用Django URL名称空间?

我正试图搞清楚Django URL名称空间.但我找不到任何示例或文档.

这是我尝试过的.

urls.py:

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^foo/', include('sub_urls', namespace='foo', app_name='foo')),
    (r'^bar/', include('sub_urls', namespace='bar', app_name='bar')),            
)
Run Code Online (Sandbox Code Playgroud)

sub_urls.py:

from django.conf.urls.defaults import patterns, url
from views import view1

urlpatterns = patterns('views',
    url(r'^(?P<view_id>\d+)/$', view1, name='view1')
)
Run Code Online (Sandbox Code Playgroud)

views.py:

from django.shortcuts import render_to_response

def view1(request, view_id):
    return render_to_response('view1.html', locals())
Run Code Online (Sandbox Code Playgroud)

在view1.html中,{%url foo:view1 3%}输出/ foo/3,{%url bar:view1 3%}输出/ bar/3.无论我浏览到/ foo/X还是/ bar/X,都是如此.

我想要的是能够浏览到/ foo/X或/ bar/X,并且{%url view1 3%}分别输出/ foo/3或/ bar/3.

django django-urls

29
推荐指数
2
解决办法
2万
查看次数

有谁知道好的Django URL命名空间教程?

我正在为Django中的URL命名空间寻找一个很好的教程.我发现官方文档有点过于稀疏 - 它缺乏很好的例子.我在堆栈上发现了类似的问题,但答案并没有帮助我完全理解这个主题.

django django-urls

29
推荐指数
1
解决办法
6827
查看次数