Index: /Users/smn/Documents/Repositories/Django/django/conf/urls/defaults.py
===================================================================
--- /Users/smn/Documents/Repositories/Django/django/conf/urls/defaults.py	(revision 3777)
+++ /Users/smn/Documents/Repositories/Django/django/conf/urls/defaults.py	(working copy)
@@ -7,6 +7,8 @@
 
 include = lambda urlconf_module: [urlconf_module]
 
+request_methods = ['GET','POST','PUT','DELETE']
+
 def patterns(prefix, *tuples):
     pattern_list = []
     for t in tuples:
@@ -14,6 +16,9 @@
         default_kwargs = t[2:]
         if type(view_or_include) == list:
             pattern_list.append(RegexURLResolver(regex, view_or_include[0], *default_kwargs))
+        elif type(view_or_include) == dict:
+            for m in [method for method in view_or_include.keys() if method in request_methods]:
+                pattern_list.append(RegexURLPattern(regex, prefix and (prefix + '.' + view_or_include.get(m)) or view_or_include.get(m), method=m, *default_kwargs))
         else:
             pattern_list.append(RegexURLPattern(regex, prefix and (prefix + '.' + view_or_include) or view_or_include, *default_kwargs))
     return pattern_list
Index: /Users/smn/Documents/Repositories/Django/django/core/urlresolvers.py
===================================================================
--- /Users/smn/Documents/Repositories/Django/django/core/urlresolvers.py	(revision 3777)
+++ /Users/smn/Documents/Repositories/Django/django/core/urlresolvers.py	(working copy)
@@ -84,12 +84,13 @@
         return str(value) # TODO: Unicode?
 
 class RegexURLPattern(object):
-    def __init__(self, regex, callback, default_args=None):
+    def __init__(self, regex, callback, method=None, default_args=None):
         # regex is a string representing a regular expression.
         # callback is either a string like 'foo.views.news.stories.story_detail'
         # which represents the path to a module and a view function name, or a
         # callable object (view).
         self.regex = re.compile(regex)
+        self.method = method
         if callable(callback):
             self._callback = callback
         else:
@@ -97,9 +98,9 @@
             self._callback_str = callback
         self.default_args = default_args or {}
 
-    def resolve(self, path):
+    def resolve(self, path, method=None):
         match = self.regex.search(path)
-        if match:
+        if match and method == self.method:
             # If there are any named groups, use those as kwargs, ignoring
             # non-named groups. Otherwise, pass all non-named arguments as
             # positional arguments.
@@ -148,14 +149,14 @@
         self.callback = None
         self.default_kwargs = default_kwargs or {}
 
-    def resolve(self, path):
+    def resolve(self, path, method=None):
         tried = []
         match = self.regex.search(path)
         if match:
             new_path = path[match.end():]
             for pattern in self.urlconf_module.urlpatterns:
                 try:
-                    sub_match = pattern.resolve(new_path)
+                    sub_match = pattern.resolve(new_path,method=method)
                 except Resolver404, e:
                     tried.extend([(pattern.regex.pattern + '   ' + t) for t in e.args[0]['tried']])
                 else:
@@ -220,7 +221,7 @@
         result = reverse_helper(self.regex, *args, **kwargs)
         return result + sub_match
 
-def resolve(path, urlconf=None):
+def resolve(path, urlconf=None, method=None):
     if urlconf is None:
         from django.conf import settings
         urlconf = settings.ROOT_URLCONF
Index: /Users/smn/Documents/Repositories/Django/django/core/handlers/base.py
===================================================================
--- /Users/smn/Documents/Repositories/Django/django/core/handlers/base.py	(revision 3777)
+++ /Users/smn/Documents/Repositories/Django/django/core/handlers/base.py	(working copy)
@@ -62,7 +62,7 @@
 
         resolver = urlresolvers.RegexURLResolver(r'^/', settings.ROOT_URLCONF)
         try:
-            callback, callback_args, callback_kwargs = resolver.resolve(path)
+            callback, callback_args, callback_kwargs = resolver.resolve(path, method=request.method)
 
             # Apply view middleware
             for middleware_method in self._view_middleware:
