does anybody know what is going on?
I basically use the following instructions.
>>> >>> > # please_wait.html
>>> >>> > ...
>>> >>> > <script type="text/javascript"
>>> >>> > src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
>>> >>> > <script type="text/javascript">
>>> >>> > $.get('{% url run_DHM %}', function(data) {
>>> >>> > if (data == 'OK') {
>>> >>> > window.location.href = '{% url display_DHM %}';
>>> >>> > } else {
>>> >>> > alert(data);
>>> >>> > }
>>> >>> > });
>>> >>> > </script>
>>> >>> > Note I've used the shorthand urls above, you could just use
>>> >>> > '/run_DHM/'
>>> >>> > and
>>> >>> > '/display_DHM/' instead of the url template tags. You could also use
>>> >>> > the
>>> >>> > full package path. Also note that the callback function I refer to
>>> >>> > is
>>> >>> > defined inline - the function(data) ... part.
>>> >>> > # views.py
>>> >>> > from django.http import HttpResponse
>>> >>> > def please_wait(request):
>>> >>> > return render_to_response('please_wait.html', ...)
>>> >>> > def run_DHM(request):
>>> >>> > # Do calculations, store results in request.session
>>> >>> > ...
>>> >>> > # If everything ok, return OK (otherwise return some error)
>>> >>> > return HttpResponse('OK')
>>> >>> > def display_DHM(request):
>>> >>> > # Get results from session
>>> >>> > return render_to_response('ran_DHM.html', ...)
Thanks,
trace
######### url.py ################
urlpatterns = patterns('',
(r'^test$',views.test_form),
(r'^please_wait', views.please_wait),
url(r'^run_DHM$', views.run_DHM, name="run_DHM") ,
url(r'^displayDHM', views.display_DHM, name="displayDHM")
)
########### view.py #############
def test_form(request):
return render_to_response('test.html')
def please_wait(request):
return render_to_response('please_wait.html')
def run_DHM(request):
### lengthy calculations... ...
return HttpResponse("OK")
def display_DHM(request):
return render_to_response('display_DHM.html')
########## test.html ###########
{% extends "baseFrame.html" %}
{% block maincontent %}
<form method="POST" action="please_wait">
<p>Test:</p>
<div id="address"></div>
<p>Type your value in here:</p>
<p><textarea name="order" rows="6" cols="50" id="order"></
textarea></p>
<p><input type="submit" value="submit" id="submit" /></p>
</form>
{% endblock %}
########### please_wait.html ##########
<html>Please wait
<script type="text/javascript" src="http://code.jquery.com/
jquery-1.7.1.min.js">
$.getJSON('{% url run_DHM %}', function(data) {
if (data == 'OK') {
window.location.href = '{% url displayDHM %}';
} else {
alert(data);
}
});
</script>
</html>
########### display_DHM.html #########
<HTML>
<BODY>END FINALLY!</BODY>
</HTML>
<!DOCTYPE html>
<html>
<head>
<title>Please wait.</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
$(function() {
$.getJSON('{% url run_DHM %}', function(data) {
if (data == 'OK') {
window.location.href = '{% url displayDHM %}';
} else {
alert(data);
}
});
});
</script>
</head>
<body>
<p>Please wait.</p>
</body>
</html>
I've also added a bit more to the HTML file so that it is more
standards-compliant.
Brett
>--
>You received this message because you are subscribed to the Google Groups
>"Django users" group.
>To post to this group, send email to django...@googlegroups.com.
>To unsubscribe from this group, send email to
>django-users...@googlegroups.com.
>For more options, visit this group at
>http://groups.google.com/group/django-users?hl=en.
>
Thanks,
def run_DHM(request):
xx = {'ok':true}
return(xx)
but still the same as before.
and how I can check if there is any error in JavaScript console in my
browser ?
On 12月15日, 上午8时57分, Brett Epps <Brett.E...@quest.com> wrote:
> I think the problem might be that you're using the getJSON function, which
> expects a JSON response, but your view returns 'OK', which is not valid
> JSON. The callback you have given to getJSON only gets called on "success"
> (meaning a JSON document was retrieved) - that's why nothing is happening
> for you right now. Try changing the return value from the view to a string
> containing:
>
> {"ok": true}
>
> And then change this line in the JavaScript:
>
> if (data == 'OK') {
>
> to:
>
> if (data.ok) {
>
> I think it should work with those changes. If it doesn't, try checking the
> JavaScript console in your browser for any errors.
>
> Brett
>
###################################
AttributeError at /run_DHM
'dict' object has no attribute 'status_code'
Request Method: GET
Request URL: http://127.0.0.1:8000/run_DHM
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value:
'dict' object has no attribute 'status_code'
###################################
and here are all current codes.
--------------------------------------------------------
urls.py---------------------------------------------------------------------
import mytest.views as views
from django.shortcuts import render_to_response
from django.conf.urls.defaults import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
(r'^test$',views.test_form),
(r'^please_wait', views.please_wait),
url(r'^run_DHM$', views.run_DHM, name="run_DHM") ,
url(r'^displayDHM', views.display_DHM, name="displayDHM")
)
---------------------------------------------------------------------
views.py---------------------------------------------------------------------
from django.shortcuts import render_to_response
from django.core.context_processors import csrf
from django.http import HttpResponse
def test_form(request):
c = {}
c.update(csrf(request))
return render_to_response('test.html',c)
def please_wait(request):
return render_to_response('please_wait.html')
def run_DHM(request):
xx = {'ok':'TRUE'}
#return HttpResponse("OK")
return xx
def display_DHM(request):
return render_to_response('display_DHM.html')
---------------------------------------------------------------------
please_wait.html---------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Please wait.</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></
script>
<script>
$(function() {
$.getJSON('{% url run_DHM %}', function(data) {
if (data.ok) {
window.location.href = '{% url displayDHM %}';
} else {
alert(data);
}
});
});
</script>
</head>
<body>
<p>Please wait.</p>
</body>
</html>
---------------------------------------------------------------------
test.html---------------------------------------------------------------------
<html>
<body>
<form method="POST" action="please_wait">{% csrf_token %}
<p>Test:</p>
<div id="address"></div>
<p>Type your value in here:</p>
<p><textarea name="order" rows="6" cols="50" id="order"></textarea></
p>
<p><input type="submit" value="submit" id="submit" /></p>
</form>
</body>
</html>
---------------------------------------------------------------------
display_DHM.html---------------------------------------------------------------------
<HTML>
<BODY>END FINALLY!</BODY>
</HTML>
#######################settings.py
# Django settings for mytest project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_...@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2',
'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if
using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for
localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for
default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as
your
# system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as
not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True
# Absolute filesystem path to the directory that will hold user-
uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use
a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/
media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static
files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/
static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'mpizo)=nw5%bzy3@pp_)^%o1&+)_=$m^ai0wqtse&=e06b5=0z'
# List of callables that know how to import templates from various
sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'mytest.urls'
TEMPLATE_DIRS = (
'C:/Users/yun/tmp/mytest/templates'
# Put strings here, like "/home/html/django_templates" or "C:/www/
django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
def run_DHM(request):
xx = {'ok':'TRUE'}
#return HttpResponse("OK")
return xx
To this:
def run_DHM(request):
return HttpResponse("{'ok': true}")
You were getting that error because views should always return
HttpResponse objects.
Brett