我正试图通过Practical Django Projects工作.它似乎有点旧,但我已经设法将代码转换到这一点.
在这一点上,本书希望我将models.py更改为:
class SearchKeyword(models.Model)
keyword = models.CharField(maxlength=50, core=True)
page = models.ForeignKey(FlatPage, edit_inline=models.STACKED,
min_num_in_admin=3, num_extra_on_change=1)
Run Code Online (Sandbox Code Playgroud)
我知道现在这已经在admin.py中完成了.所以我的models.py看起来像这样:
from django.db import models
from django.contrib.flatpages.models import FlatPage
class SearchKeyword(models.Model):
keyword = models.CharField(max_length=50)
page = models.ForeignKey(FlatPage)
class Admin:
pass
def __unicode__(self):
return self.keyword
Run Code Online (Sandbox Code Playgroud)
我现在创建的admin.py看起来像这样:
from search.models import SearchKeyword
from django.contrib import admin
from django.contrib.flatpages.models import FlatPage
class SearchKeywordInline(admin.StackedInline):
model = SearchKeyword
extra = 3
class FlatPageAdmin(admin.ModelAdmin):
model = FlatPage
inlines = [SearchKeywordInline]
admin.site.register(FlatPage, FlatPageAdmin)
Run Code Online (Sandbox Code Playgroud)
当我加载管理页面时,我收到:
AlreadyRegistered at /admin/
The model FlatPage is already …Run Code Online (Sandbox Code Playgroud) 我在线学习了一个很棒的django教程,但是我遇到了最终heroku部署的问题.
这是django教程:http: //gettingstartedwithdjango.com/en/lessons/introduction-and-launch/
我遇到的问题是最后一次调用heroku:
heroku python manage.py syncdb
这是我得到的错误:
(blog-venv)vagrant@precise64:/vagrant/projects/microblog$ heroku run python manage.py syncdb
Running `python manage.py syncdb` attached to terminal... up, run.2530
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", …Run Code Online (Sandbox Code Playgroud) 我在做一个预填充的表单时遇到了这个奇怪的问题。在我的模板中,表单方法明确说明为POST:
<form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">{% csrf_token %}
Run Code Online (Sandbox Code Playgroud)
但在我的视图函数中, request.method 结果是GET.
下面是我的视图函数:
def editProfile(request,template_name):
theprofile = request.user.profile
print theprofile.fullname
notificationMSG = ''
print request.method
if request.method == 'POST':
form = UserProfileForm(request.POST,request.FILES, instance=theprofile)
if form.is_valid():
form.save()
notificationMSG = "success?"
else:
form = UserProfileForm()
print "error"
dic = {'form':form,
'notificationMSG':notificationMSG}
return render_to_response(template_name, dic, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会打印出GET. 以前有人遇到过这种奇怪的事情吗?
我在上一页上有一个搜索表单,我允许用户搜索$ q.然后我在数据库中查询"keys"LIKE $ q.while循环显示每个匹配数据库条目的"name"和"weblink".
一切正常.但是,我希望'weblink'显示为可点击的链接.理想情况下,它会像HTML一样阅读:'weblink'.我无法弄清楚php和html的正确组合来制作while循环和HTML工作.
任何帮助,将不胜感激.提前致谢.
// query database
$query = mysql_query("SELECT * FROM `forumlist` WHERE `keys` LIKE '%$q%'");
// display query results
while($row = mysql_fetch_array($query))
{
echo $row['name'];
echo "<br/>";
echo $row['weblink'];
}
Run Code Online (Sandbox Code Playgroud) 我有一个在mysite/new_player.html中创建的表单.它接受3个字段,user_name,real_name和site_played,它们对应于数据库中的Player表.
<h1> New Player </h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="/stakeme/new/" method="post">
{% csrf_token %}
User Name: <input type="text" name="user_name" id="user_name"/><br>
Real Name: <input type="text" name="real_name" id="real_name"/><br>
Site Played: <input type="text" name="site_played" id="site_played"/><br><br>
<input type="submit" value="New Player" />
</form>
Run Code Online (Sandbox Code Playgroud)
我被困在如何将其添加到我的mysite/views.py文件中.我已经完成了民意调查教程,但是教程中使用的唯一形式是"民意调查"的多项选择"选择",我似乎无法将其改编为文本字段.
def new_player(request):
return render_to_response('stakeme/new_player.html',
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
据我所知,我需要创建类似的东西def add(request): return render_to_response('stakeme/new/'.. etc并在这里添加POST数据,但这就是我迷失的地方.我不知道如何将数据导入数据库.
我正在阅读Django文档,但我觉得我只是复合了一些我不理解的东西.如果有人能指出我正确的方向,我会非常感激.
我收到错误你的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行使用"密钥LIKE%dogs%ORDER BY rating DESC"附近使用正确的语法
$query = mysql_query("SELECT * FROM listings WHERE keys LIKE %$q% ORDER BY rating DESC") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
我搜索了"狗",取代了"q"搜索变量.添加ORDER BY评级DESC时出现此语法错误.我有相同的代码行,减去过去的代码,它工作正常.我尝试在'listing''key'和'rating'周围添加单引号,但它仍然无法正常工作.
我确信这是一个简单的解决方案,我只是缺少.
谢谢
我正在学习部署django应用程序.heroku从关于heroku网站上的文章和SO上的很多帖子,我了解到这Amazon S3是一个受欢迎的选择CDN.我知道这对大多数读者来说可能听起来很奇怪..不幸的是我没有信用卡(因为我居住的地方和我的银行帐户状态等 - 长故事:()并且无法注册Amazon S3.有没有我可以使用的免费文件托管网站MEDIA_URL?